查询是什么意思(Elasticsearch)
如果有更好的建议或者想看更多关于综合百科技术大全及相关资讯,可以多多关注茶馆百科网。

今天我们来学习一下Elasticsearch(以下简称ES)中的查询和过滤。
在ES中,有两种搜索:查询和过滤:
QueryContext:它与搜索非常相关。FilterContext:不需要计算相关性,使用缓存可以获得更好的性能。例如,您需要搜索一部电影,其中包含以下信息:
审查包括烧脑,评分高于8,上映时间在2010年到2020年之间。
因此,这个搜索包括三个判断逻辑来查询三个不同的字段。如果需要满足这样的查询需求,ES中提供了bool查询。bool查询可以包含一个或多个查询词,并支持以下四种查询:
必须匹配,贡献分应该:选择性匹配,贡献分必须_不:查询词必须不匹配过滤器:必须匹配,无贡献分。上图是一个bool查询,是对用户的搜索。城市必须是北京,性别必须是男的。这个用了filter,显示这个分数不会。在should中有一个数组,意思是在should中可以写多个条件,只要用户名是这两个中的一个,就满足条件。
事实上,bool query的子查询可以任意顺序出现,可以嵌套多个查询。
此外,应分两种情况使用:
Bool查询只包含should,不包含must查询。布尔查询包含应该查询和必须查询。我们来看看这两种情况有什么区别。
如果bool查询中没有must子句,那么should中至少要满足一个查询(可以通过minimum_should_match设置满足条件的数字或百分比)。
当同时包含should和must时,文档不必满足should中的条件,但如果满足条件,则相关性得分会增加。
FilterContext
上面提到filter和must_not不会影响分数,从查询结果可以看出_score为0。QueryContext
采用的是应该查询,会分点,结果如下图所示:同时,查询语句的结构也会对相关性分数产生影响:
同一级别的查询字段具有相同的权重。通过嵌套bool查询,可以改变对分数的影响。
BoostBoostingQuery
相关性也可以通过设置特定字段的boost值来控制:当boost1时,得分的相关性提高;当Boost1为0时,得分的相关性降低;boost0时贡献负积分或使用ES提供的BoostingQuery进行查询:
首先,插入一些测试数据:
POST/product/_ bulk { ' index ' { ' _ id '1 } } { ' content ' ' Apple MAC ' } { ' index ' { ' _ id '2 } } { ' content ' ' Apple ipad ' } { ' index ' { ' _ id ' 33603 } } { ' content ' 3360 ' Apple juice ' }如下图所示,有同时满足正查询和负查询(内容包含果汁)的负查询,将按照原相关度得分乘以negative_boost进行评分,用于降低负匹配文档的相关度得分。
如右图所示,这一条的查询结果是三条数据,可以发现AppleMac和AppleiPad的相关度得分相同,都在前面,而AppleJuice的相关度得分是另外两条的0.1倍,排在最后。
使用表格总结QueryContext和FilterContext之间的差异:
ContextType是指使用Query查找与查询语句最匹配的文档,计算所有文档的相关度,并对查询进行排序;bool中的must和shouldFilter查找Filter和must _ not在匹配查询语句的bool中;在常量分数中过滤
Filter不需要计算相关分数并按相关分数排序,内置自动缓存中也有最常用过滤器的数据。相反,query需要计算相关度得分并按得分排序,它不能缓存结果。因此,在一些不需要关联分数的查询场景中,尽量使用FilterContext来提高查询效率。
下图显示了易贝对于FilterContext和QueryContext的性能比较:
FilterContextVSQueryContext
那么filter的缓存是如何工作的呢?
ES会建立一个文档匹配过滤位置位集(用来标识文档是否匹配一个过滤条件,如果匹配1,就不匹配0),下次这个过滤条件来临时,就不需要重新扫描倒排索引了,可以大大提高性能。此外,当添加或更新文档时,该过滤器的位集也将被更新。
总结
当用户输入多个条件进行查询时,可以使用bool查询。在bool查询中,filter和must_not属于FilterContext,不会影响评分结果。必须且应该属于QueryContext,会影响结果得分。在布尔查询中,查询结构对相关性分数有影响。您可以通过嵌套修改查询中不同字段的权重,并通过指定字段的提升值直接控制搜索中的权重。此外,BoostingQuery可以提高搜索的准确性,并在结果中显示更多搜索。
本文主要介绍了关于查询是什么意思(Elasticsearch)的相关养殖或种植技术,综合百科栏目还介绍了该行业生产经营方式及经营管理,关注综合百科发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解综合百科技术怎么管理的要点,是您综合百科致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/98114.html