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_selectionfalsetrue

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

 

猜你喜欢

转载自www.cnblogs.com/wangzhuxing/p/9480760.html