Elasticsearch - 搜索类型与搜索位置

Posted 席飞剑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch - 搜索类型与搜索位置相关的知识,希望对你有一定的参考价值。

一、搜索类型:

Elasticsearch允许用户选择其所希望的处理查询的方式。因为存在一些不同的情形,对其使用不同的搜索类型才是合适的。为了控制查询的执行方式,我们可以在请求中使用search_type参数,以有下类型可以选择。

1、query_and_fetch:通常是最快也是最简单的搜索类型。查询语句在所有需检查的分片上并行执行,并且所有分片返回结果的规划为size参数的取值。因此,该类型返回的文档数目最大为size参数的取值与分片数目的乘积。

2、query_then_fetch:查询语句首先得到将文档排序所需的信息,然后得到要获取的文档内容的相关分片。与query_and_fetch不同,该类搜索返回的文档数目最大为size参数的取值。

3、dfs_query_and_fetch:该类搜索类似于query_and_fetch。除了完成query_and_fetch的工作外,还执行初始查询阶段,该阶段计算分布式的词频以更精准地对返回文档打分。

4、dfs_query_then_fetch:该类搜索类似于query_then_fetch。除了完成query_then_fetch的工作外,还执行初始查询阶段,该阶段计算分布式的词频以更精准地对返回文档打分。

5、count:这是一种特殊的搜索类型,只返回匹配查询的文档数目。

二、搜索位置:

除了上面的控制搜索选项外,还可以控制搜索在何种分片上执行。默认情况下,Elasticsearch使用请求发送到的节点和集群中其他节点上的可用分片和副本。ES对查询的默认处理通常是正确的,如果有时我们希望改变默认行为,可以在查询指令中通过preference参数来实现。

1、_primary:该值说明只会在主分片上执行操作,不会使用副本。

2、_primary_first:说明如果主分片可用,则在主分片上执行操作;如果主分片不可用,则在其他分片上执行。

3、_local:该值说明如果可能的话,将在请求发送到的节点上的可用分片上执行操作。

4、_only_node:node_id:该值说明将在给定节点ID的节点上执行操作。



以上是关于Elasticsearch - 搜索类型与搜索位置的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch 基于地理位置的搜索查询

Elasticsearch 基于地理位置的搜索查询

Elasticsearch 基于地理位置的搜索查询

大数据搜索引擎 Elasticsearch 数字类型(numeric)数据的处理与搜索原理。

Elasticsearch 中的搜索类型

全文搜索之MySQL与ElasticSearch搜索引擎