1.1 match 它会根据所给的字符串,进行分词,而后去找出,包含这些分词结果的记录。html
GET /_search { "query": { "match": { "title": "我今天看了一场电影" } } }
中文好用的是ik的两个分词器 ik_max_word 和 ik_smart
ik_max_word : 会将文本作最细粒度的拆分,例如「中华人民共和国国歌」会被拆分为「中华人民共和国、中华人民、中华、华人、人民共和国、人民、人、民、共和国、共和、和、国国、国歌」,会穷尽各类可能的组合;
ik_smart : 会将文本作最粗粒度的拆分,例如「中华人民共和国国歌」会被拆分为「中华人民共和国、国歌」;
提示:作精确匹配搜索时,你最好用过滤语句,由于过滤语句能够缓存数据。
1.2 match_phrase 是短语匹配 比 match 精准一点,由于有时候 match 会分词出更多的词。缓存
1.3 match_phrase_prefix 实现查询时输入即搜索查询时输入即搜索,prefix是前缀的意思,有正则匹配去搜索的意味,只要前缀知足就会都被查询到。less
参考连接:https://blog.csdn.net/chuan442616909/article/details/57917260ide
1.4 multi_match 它查询容许你作 match 查询的基础上同时搜索多个字段post
GET dm_map_news/_search { "query": { "multi_match": { "query": "中国", "fields": ["title","content"] } } }
#put插入数据必定要有_id,能够本身指定 PUT lagou/job/1 { "name":"ppp", "age":12 } #post插入数据,能够没有_id,他会本身随机生成一个_id POST lagou/job/ { "name":"ppp", "age":13 }
must : 多个查询条件的彻底匹配,至关于 and
测试
must_not : 多个查询条件的相反匹配,至关于 not
idea
should : 至少有一个查询条件匹配,至关于 or
spa
{ "bool": { "must": { "match": { "title": "how to make millions" }}, "must_not": { "match": { "tag": "spam" }}, "should": [ { "match": { "tag": "starred" }}, { "range": { "date": { "gte": "2014-01-01" }}} ] } }
适合于复杂的查询条件.net
主要是用于精准匹配.好比数字,日期,布尔值或 not_analyzed
的字符串(未经分析的文本数据类型),可是若是字段是分词的,也能够查获得。code
GET dm_map_news/_search { "_source": "title", "query": { "term": { "title": { "value": "中国" } } } }
容许多个匹配条件,若是某个字段指定了多个值,那么文档须要一块儿去作匹配,只要符合其中一个便可
GET dm_map_news/_search { "_source": "title", # 只显示title资格字段 "query": { "terms": { "title": [ "中国", "新闻" ] } } }
过滤容许咱们按照指定范围查找一批数据
gt :大于
gte :大于等于
lt : 小于
lte : 小于等于
GET dm_map_news/_search { "_source": "publish_time", "query": { "range": { "publish_time": { "gte": "2018-01-01 00:00:00", "lte": "2019-01-01 00:00:00" } } } }
用来查看该字段是否存在
GET dm_map_news/_search
{
"query": {
"bool": {
"filter": {
"exists": {
"field": "title"
}
}
}
}
}
可是这里missing怎么用不会????????
8.1 _update_by_query 根据查询条件查询出来的数据,修改某些字段的内容
POST crawler_seed_response/info/_update_by_query { "script": { "inline": "ctx._source.state = params.state", "lang": "painless", "params": { "state": "2" } }, "query": { "term": { "entrance_id": "2460994" } } }
解释:crawler_seed_response中entrance_id=2460994的数据,把state的字段内容修改成2
8.2 _delete_by_query 查询出来的数据直接删除,最好是先用 _search 测试下 查询语句对不对,防止误操做。
post
10.Task API
10.1 获取reindex的状态 GET _tasks?detailed=true&actions=*reindex
将文档拷贝到新的索引下
POST _reindex { "source": { "index": "news" }, "dest": { "index": "news_bak" } }
复制一个新的索引 为 news_bak
参考连接:
https://blog.csdn.net/liuxiangqian/article/details/78611316?locationNum=9&fps=1
https://es.xiaoleilu.com/index.html
https://www.cnblogs.com/softidea/p/6081285.html