kibana之elasticsearch中的复杂搜索

        面我们已经简单介绍了es中较为简单的api的操作,今天我准备给大家分享的是在es中较为复杂的查询,也是在工作过程中经常遇到的问题,写的可能不是太好,希望读者能给出建设性的意见,谢谢!

  1、在这之前我们首先简历一个测试索引,并导入几条数据,如下图所示kibana之elasticsearch中的复杂搜索

2、查询索引中的全部数据 格式:GET  /article/book/_search

kibana之elasticsearch中的复杂搜索

注意:此种方式一般不常用,因为如果叫上条件来搜索的话,其http传输的url拼接较为麻烦

3、 DSL

 (1)查询所有的数据 格式:GET  /article/book/_search {"query": { "match_all": {} }}

kibana之elasticsearch中的复杂搜索

(2)查询“desc”中含有“java”的,并且按价格降序

kibana之elasticsearch中的复杂搜索

(3)分页查询么,总的有4条商品,假设每页就显示1条,现在显示第2页

kibana之elasticsearch中的复杂搜索

(4)在查询结果中指定需要显示的字段   ---如查询只需显示名称那个和描述即可

kibana之elasticsearch中的复杂搜索

(5)查询中的过滤 --查询desc中含有java的,并且价格大于30的数据

kibana之elasticsearch中的复杂搜索

(6)全文检索

kibana之elasticsearch中的复杂搜索


注:根据es的索引建立排序方式,desc,首先会被拆分,建立 相应的倒排索引中

(7)短语检索【phrase search】

kibana之elasticsearch中的复杂搜索

注:短语检索和全文检索有些许不同,其不同之处在于:

全文检索会将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果回;

短语检索,要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配,才能作为结果返回

(8)搜索结果高亮显示 【highlight search】

kibana之elasticsearch中的复杂搜索

4、聚合搜索

(1)需求:对desc中含有java的并计算tags下的数量

kibana之elasticsearch中的复杂搜索

此时会发现报一个错误,没关系,将用如下方法解决

kibana之elasticsearch中的复杂搜索

再次运行上一步骤即可解决问题

kibana之elasticsearch中的复杂搜索

(2)需求:先分组,再算每组的平均值,计算每个tags下书的平均价格

kibana之elasticsearch中的复杂搜索

(3)需求:按照指定的价格范围区间进行分组,然后在每组内再按照tag进行分组,最后再计算每组的平均价格

kibana之elasticsearch中的复杂搜索好了,以上就是给大家分享的内容,写的比较草,排版等好多工作还需要改进,尽请谅解下,谢谢大家,如有错误,还请读者给以批评个建议,谢谢!