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的节点上执行操作。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值