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"
}
}
]
}