ElasticSearch常见命令

1、创建索引,并设置ngram分词器

put  http://121.5.116.227:9000/article
{
    "settings": {
        "number_of_shards": 3,
        "number_of_replicas": 1,
        "refresh_interval": "5s",
        "max_ngram_diff": "9",
        "blocks": {
            "read_only_allow_delete": "false"
        },
        "analysis": {
          "analyzer": {
            "ngram_analyzer" : {
              "tokenizer" : "ngram_tokenizer"
            }
	      },
	      "tokenizer": {
          "ngram_tokenizer" : {
              "token_chars" : [
                "letter",
                "digit"
              ],
              "min_gram" : "1",
              "type" : "ngram",
              "max_gram" : "10"
            }
	      }
        }
    },
    "mappings" : {
        "_routing" : {
          "required" : true
        },
        "properties" : {
          "id" : {
            "type" : "long"
          },
          "banner" : {
            "type" : "text"
          },
          "isHot" : {
            "type" : "long"
          },
          "pubTime" : {
            "type" : "date",
            "format" : "yyyy-MM-dd HH:mm:ss||strict_date_optional_time||epoch_millis"
          },
          "title" : {
            "type" : "text",
            "fields" : {
              "ngram" : {
                "type" : "text",
                "analyzer" : "ngram_analyzer"
              }
            }
          },
          "summary" : {
            "type" : "text",
            "fields" : {
              "ngram" : {
                "type" : "text",
                "analyzer" : "ngram_analyzer"
              }
            }
          },          
          "content" : {
            "type" : "text",
            "fields" : {
              "ngram" : {
                "type" : "text",
                "analyzer" : "ngram_analyzer"
              }
            }
          },
          "categoryId" : {
            "type" : "text"
          },
          "tag" : {
            "type" : "text"
          },
          "viewsCount" : {
            "type" : "text"
          },          
          "commentsCount" : {
            "type" : "text"
          }
        }
      
    }
}

2、查询mapping

GET commodity/_mapping

3、查询setting

GET commodity/_settings

4、修改setting、_mapping

第一步关闭索引

POST /commodity/_close

第二步修改setting、_mapping

PUT /commodity/_settings
{
    "settings" : {
      "index" : {
        "analysis": {
  "analyzer": {
    "ngram_analyzer": {
      "tokenizer": "ngram_tokenizer"
      }
    },
  "tokenizer": {
    "ngram_tokenizer": {
      "type": "ngram",
      "min_gram": 1,
      "max_gram": 30,
      "token_chars": [
        "letter",
        "digit"
      ]
          }
        }
      }
    }
  }
}
PUT /commodity/_mapping/doc
{
    "properties":{
          "name": {  
            "type": "text",
            "fields": {  
              "ik_max": {  
                "type": "text",
                "analyzer": "ik_max_word"
              },
              "ik_smart": {  
                "type": "text",
                "analyzer": "ik_smart"
              },
              "keyword": {  
                "type": "keyword",
                "normalizer": "custom_normalizer"
              },
              "pinyin": {  
                "type": "text",
                "analyzer": "pinyin_analyzer"
              },
              "autocomplete": {  
                "type": "text",
                "analyzer": "autocomplete"
              },
              "ngram": {  
                "type": "text",
                "analyzer": "ngram_analyzer"
              }
            }
          }
    }
}

第四步打开索引

POST /commodity/_open

5、更新数据单条数据

article/update/{#id}(article/update/2?routing=2900004)

{
  "id": 2,
  "pubTime": "2021-10-27 14:03:10",
  "title": "测试"
}

6、设置超时时间

PUT /_cluster/settings
{
  "persistent": {
    "search.default_search_timeout": "10s"
  },
  "transient": {
    "search.default_search_timeout": "10s"
  }
}

7、设置副本数

PUT /goods/_settings
{
"number_of_replicas":1
}

8、复杂查询

查询title、summary、content字段中有 ”参数“ 的文章是否热门(isHot字段为0)并且文章分类(categoryId字段为3)的文章,按照匹配得分_score和发布时间pubTime降序排序

GET article/_search?routing=5
{
  "from": 0,
  "size": 18,
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              {
                "match": {
                  "title": {
                    "query": "参数",
                    "operator": "OR",
                    "prefix_length": 0,
                    "max_expansions": 50,
                    "fuzzy_transpositions": true,
                    "lenient": false,
                    "zero_terms_query": "NONE",
                    "auto_generate_synonyms_phrase_query": true,
                    "boost": 1
                  }
                }
              },
              {
                "match": {
                  "summary": {
                    "query": "参数",
                    "operator": "OR",
                    "prefix_length": 0,
                    "max_expansions": 50,
                    "fuzzy_transpositions": true,
                    "lenient": false,
                    "zero_terms_query": "NONE",
                    "auto_generate_synonyms_phrase_query": true,
                    "boost": 1
                  }
                }
              },
              {
                "match": {
                  "content": {
                    "query": "参数",
                    "operator": "OR",
                    "prefix_length": 0,
                    "max_expansions": 50,
                    "fuzzy_transpositions": true,
                    "lenient": false,
                    "zero_terms_query": "NONE",
                    "auto_generate_synonyms_phrase_query": true,
                    "boost": 1
                  }
                }
              }
            ],
            "adjust_pure_negative": true,
            "boost": 1
          }
        }
      ],
    "filter": {
        "bool": {
            "must": [
                {
                        "term": {
                        "isHot": {
                        "value": "0",
                        "boost": 1
                        }
                    }
                },
                {
                        "term": {
                        "categoryId": {
                        "value": "3",
                        "boost": 1
                        }
                    }
                }                
                ]
        }
      },
      "adjust_pure_negative": true,
      "boost": 1
    }
  },
  "sort": [
        {
      "_score": {
        "order": "desc"
      }
    },
    {
      "pubTime": {
        "order": "desc"
      }
    }
  ]
}

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>