(TOC)
<人力资源/>
0说明
基于es 5.4和es 5.6,列举的是个人工作中经常用到的查询(只是工作中使用的是Java API),如果需要看完整的,可以参考官方相关文档
https://www.elastic.co/guide/en/elasticsearch/reference/5.4/search.html。
1查询
先使用一个快速入门来引入,然后后面列出的各种查询都是用得比较多的(在我的工作环境是这样),其它没怎么用的这里就不列出了。
1.1快速入门
1.1.1查询全部
<代码类=" language-json ">得到索引/类型/_search { "查询":{ “match_all”: {} } }代码>
或
<代码类=" language-json ">得到索引/类型/_search 代码>
1.1.2分页(以词为例)
<代码类=" language-json ">得到索引/类型/_search { “从”:0, “大小”:100年, "查询":{ “":{ “区域”:“广州” } } }代码>
1.1.3包含指定字段(以词为例)
<代码类=" language-json ">得到索引/类型/_search { “_source”:“爱好”、“名称”, "查询":{ “":{ “区域”:“广州” } } }代码>
1.1.4排序(以词为例)
单个字段排序:
<代码类=" language-json ">得到索引/类型/_search { "查询":{ “":{ “区域”:“广州” } }, “排序”:( {" user_id ":{“秩序”:“asc}}, {"工资":{“秩序”:“desc}} ] }代码>
1.2全文查询
查询字段会被索引和分析,在执行之前将每个字段的分词器(或搜索分词器)应用于查询字符串。
1.2.1匹配查询
<代码类=" language-json "> { "查询":{ "匹配":{ "内容":{ “查询”:“里皮恒大”, “操作符”:”和“ } } } }代码>
操作符默认是或者,也就是说,“里皮恒大”被分词为“里皮”和“恒大”,只要内容中出现两个之一,都会搜索到,设置为,之后,只有同时出现都会被搜索到。
引用>1.2.2 match_phrase查询
文档同时满足下面两个条件才会被搜索到:
<李>(1)分词后所有词项都要出现在该字段中李> <李>(2)字段中的词项顺序要一致李>
<代码类=" language-json "> { "查询":{ " match_phrase ": { “内容”:“里皮恒大” } } }代码>1.3词项查询
词项搜索时对倒排索引中存储的词项进行精确匹配,词项级别的查询通过用于结构化数据,如数字,日期和枚举类型。
1.3.1术语查询
<代码类=" language-json "> { "查询":{ “":{ “推迟日期”:“2015-12-10 00:41:00” } } }代码>1.3.2术语查询
术语的升级版,如上面查询的推迟日期字段,可以设置多个。
<代码类=" language-json "> { "查询":{ “条款”:{ “推迟日期”:[ “2015-12-10 00:41:00”, “2016-02-01 01:39:00” ] } } }代码>因为术语是精确匹配,所以不要问,[]中的关系怎么设置,这怎么可能,既然是精确匹配,一个字段也不可能有两个不同的值。
引用>1.3.3范围查询
匹配某一范围内的数据型,日期类型或者字符串型字段的文档,注意只能查询一个字段,不能作用在多个字段上。
数值:
<代码类=" language-json "> { "查询":{ “范围”:{ “回复”:{ “一种”:245年, “lte”: 250 } } } }代码>支持的操作符如下:
gt:大于一种:大于等于,lt:小于,lte:小于等于
引用>日期:
<代码类=" language-json "> { "查询":{ “范围”:{ "推迟日期":{ “gte”:“2016-09-01”就是, “lte”:“2016-09-30 23:59:59”, “格式”:“yyyy-MM-dd HH: mm: ss” } } } }代码>格式不加也行,如果写的时间格式正确。
引用>1.3.4存在查询
ElasticSearch常用操作:查询与聚合篇