ES6.3常用api之搜索类api
Posted 不积小流,无以成江海!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6.3常用api之搜索类api相关的知识,希望对你有一定的参考价值。
1.搜索api
1.1.routing:路由
执行搜索时,它将广播到所有索引/索引分片(副本之间的循环)。可以通过提供routing
参数来控制将搜索哪些分片。例如,在索引推文时,路由值可以是用户名。
POST /twitter/tweet?routing=kimchy { "user" : "kimchy", "postDate" : "2009-11-15T14:12:12", "message" : "trying out Elasticsearch" }
1.2.adaptive replica selection:自适应副本选择
作为以循环方式发送到数据副本的请求的替代方法,可以启用自适应副本选择。这允许协调节点根据许多标准将请求发送到被认为“最佳”的副本:
- 协调节点与包含数据副本的节点之间的过去请求的响应时间
- 超过搜索请求的时间在包含数据的节点上执行
- 包含数据的节点上的搜索线程池的队列大小
这可以通过改变所述动态群集配置开启 cluster.routing.use_adaptive_replica_selection
从false
到true
PUT / _cluster / settings { “短暂的”: { “cluster.routing.use_adaptive_replica_selection”:true } }
1.3.Stats Groups:统计组
搜索可以与统计组相关联,统计组维护每个组的统计聚合。稍后可以使用indices stats API专门检索它 。例如,以下是将请求与两个不同的组相关联的搜索正文请求:
POST /_search { "query" : { "match_all" : {} }, "stats" : ["group1", "group2"] }
1.4.全局搜索超时
作为请求正文搜索的一部分,单个搜索可能会超时 。由于搜索请求可以源自多个源,因此Elasticsearch具有全局搜索超时的动态集群级设置,适用于未在请求正文搜索中设置超时的所有搜索请求。默认值为无全局超时。search.default_search_timeout
可以使用“ 群集更新设置”端点设置和设置设置密钥。设置此值可-1
将全局搜索超时重置为无超时。
1.5.搜索取消
可以使用标准任务取消 机制取消搜索。默认情况下,正在运行的搜索仅检查是否在段边界上取消它,因此取消可能会被大段延迟。通过将动态集群级别设置设置search.low_level_cancellation
为,可以提高搜索取消响应性true
。但是,它带来了更频繁的取消检查的额外开销,这在大型快速运行的搜索查询中是显而易见的。更改此设置仅影响更改后开始的搜索。
1.6.搜索并发和并行
默认情况下,Elasticsearch不会根据请求命中的分片数拒绝任何搜索请求。虽然Elasticsearch将优化协调节点上的搜索执行,但大量分片会对CPU和内存产生重大影响。以这样的方式组织数据通常是一个更好的主意,即更少的大分片。如果您要配置软限制,可以更新action.search.shard_count.limit
群集设置以拒绝搜索过多分片的搜索请求。
request参数max_concurrent_shard_requests
可用于控制搜索API将为请求执行的最大并发分片请求数。此参数应用于保护单个请求不会使群集过载(例如,默认请求将命中群集中的所有索引,如果每个节点的分片数量很高,则可能导致碎片请求被拒绝)。此默认值基于群集中的数据节点数,但最多256
。
以上是关于ES6.3常用api之搜索类api的主要内容,如果未能解决你的问题,请参考以下文章
一脚踩进java之基础篇28——常用API(Arrays类,大数据运算)
一脚踩进java之基础篇28——常用API(Arrays类,大数据运算)
一脚踩进java之基础篇23——常用API(ObjectString)