黑马学ElasticSearch(五)

目录:

(1)DSL查询语法-DSL查询分类和基本语法

(2)DSL查询语法-全文检索查询

(3)DSL查询语法-精确查询

(4)DSL查询语法-地理查询

(5)DSL查询语法-相关性算分

(6)DSL查询语法-FunctionScoreQuery

(7)DSL查询语法-BooleanQuery


(1)DSL查询语法-DSL查询分类和基本语法

我们利用RestClient往ES中导入了很多数据,数据的存储不是目的,最终是从 海量的数据中,检索出你所需要的哪些,这就用到了ES的搜索功能了

黑马学ElasticSearch(五)_第1张图片

 黑马学ElasticSearch(五)_第2张图片

黑马学ElasticSearch(五)_第3张图片 

黑马学ElasticSearch(五)_第4张图片 

查询所有:是不需要查询条件的:

黑马学ElasticSearch(五)_第5张图片 

黑马学ElasticSearch(五)_第6张图片 

(2)DSL查询语法-全文检索查询

 黑马学ElasticSearch(五)_第7张图片

黑马学ElasticSearch(五)_第8张图片 match:代表有条件,field:字段根据那个字段查询  text:要搜索的内容

all是前面学习表映射时的多个字段的结合字段 

查询条件:外滩  全文检索字段all   条件含有外滩

黑马学ElasticSearch(五)_第9张图片

查询条件:外滩如家 

黑马学ElasticSearch(五)_第10张图片 黑马学ElasticSearch(五)_第11张图片

 黑马学ElasticSearch(五)_第12张图片

 

multi_match 多个点字段搜索:在多个字段中查询 含有外滩如家的

黑马学ElasticSearch(五)_第13张图片黑马学ElasticSearch(五)_第14张图片

 黑马学ElasticSearch(五)_第15张图片

通过使用all和下面的多个字段搜索是一样的,那么使用那个呢?参与搜索的字段越多查询效率越低推荐使用all的方法,不要查询整个字段而是把字段copy到一个字段中去查

黑马学ElasticSearch(五)_第16张图片 

 黑马学ElasticSearch(五)_第17张图片

(3)DSL查询语法-精确查询

 这些类型有共同的特点,就是他们的值是一个不可分割的整体,在搜索的时候,对搜索的条件也有要求,查询的条件它也不需要分词,而且搜索条件要和查找的字段值完全匹配黑马学ElasticSearch(五)_第18张图片

 这几个字段都是keyword 或数值

 

 黑马学ElasticSearch(五)_第19张图片

term:根据词条精确查询:查询city为上海的 

这时搜索的所有信息city都是上海的

黑马学ElasticSearch(五)_第20张图片 

 它是精确匹配的,不会进行分词了:杭州上海会搜索不到黑马学ElasticSearch(五)_第21张图片

 range:根据条件范围查询

搜索price大于等于100,小于等于300

黑马学ElasticSearch(五)_第22张图片

黑马学ElasticSearch(五)_第23张图片 

(4)DSL查询语法-地理查询

 黑马学ElasticSearch(五)_第24张图片

黑马学ElasticSearch(五)_第25张图片 

黑马学ElasticSearch(五)_第26张图片 据中心点15公里黑马学ElasticSearch(五)_第27张图片

据中心地5公里 

黑马学ElasticSearch(五)_第28张图片 

 (5)DSL查询语法-相关性算分

相关性算分:比如说我们之前搜索外滩如家这样的酒店信息,我们发现同时包含外滩如家的酒店排名靠前,只包含外滩和如家的酒店排名靠后,这就是相关性了,我们es会对相关性打分,相关度越高打分越高,排名越靠前 

黑马学ElasticSearch(五)_第29张图片

 黑马学ElasticSearch(五)_第30张图片

IDF:如家在三个文档中都出现了,权重为0 虹桥只有第一条出现了这条文档的权重较大 

BM25算法的影响不会受词频的影响 

黑马学ElasticSearch(五)_第31张图片 黑马学ElasticSearch(五)_第32张图片

 (6)DSL查询语法-FunctionScoreQuery

如果想要人为的控制文档的排名,就用到function score query了

黑马学ElasticSearch(五)_第33张图片 

 黑马学ElasticSearch(五)_第34张图片

 默认加权模式是乘黑马学ElasticSearch(五)_第35张图片

 加权后跑到第一名了:黑马学ElasticSearch(五)_第36张图片

 更改加权模式:sum

黑马学ElasticSearch(五)_第37张图片

 

 黑马学ElasticSearch(五)_第38张图片

(7)DSL查询语法-BooleanQuery

Function  Score Query计算相关性算分

Boolean Query:不是计算相关性算分,而是把多个查询语句组合在一起,形成新的查询,被组合的查询称为子查询

must_not和filter 不参与算分  ,它的返回结果是或否 true和false,如果子查询较多,都参与算分,会非常影响性能

ES会把filer的查询,放到缓存里面,将来在查询的时候,会近一步提高性能

有以上四种组合关系,除了跟算分相关的,一般是关键字,放到must和should里面

其他的都应该放到must_not和filter里面,尽可能的减少算分提高查询的效率

下面图片的查询,搜索框的内容关键字的搜索可以放到must里,因为它参与算分

过滤条件:品牌也好价格也好,放到must_not或者filter里面,放到这里面不参与算分

 黑马学ElasticSearch(五)_第39张图片

 黑马学ElasticSearch(五)_第40张图片

 黑马学ElasticSearch(五)_第41张图片

黑马学ElasticSearch(五)_第42张图片 

 黑马学ElasticSearch(五)_第43张图片

黑马学ElasticSearch(五)_第44张图片 黑马学ElasticSearch(五)_第45张图片

 黑马学ElasticSearch(五)_第46张图片

 

 

你可能感兴趣的:(elasticsearch,大数据)