【问题标题】:How do _search queries work in Elasticsearch?_search 查询如何在 Elasticsearch 中工作?
【发布时间】:2020-10-15 05:12:34
【问题描述】:

问题更多的是:“Elasticsearch 节点如何交互以提供特定的搜索结果以及搜索请求的流程是什么?”

我参考了以下链接来理解,但在我试图理解的内容中,它们并不是很清楚。

  1. https://www.elastic.co/guide/en/elasticsearch/reference/master/ingest.html
  2. https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html

根据上述文档,

  1. “数据节点”是在调用 _search 查询时执行所有处理的节点。
  2. “摄取节点”在索引数据之前会进行一些预处理。

那么,以上两种说法正确吗? 因此,

  1. 当发生 _search 查询时,摄取节点是否有任何角色可以执行?
  2. 在对数据进行索引时,数据节点是否有任何角色可以执行?
  3. 在搜索数据时是否有任何其他节点可以执行任何角色?

或者,如果您可以帮助解释搜索请求的流程(哪个节点接收 API 调用、哪个节点过滤数据、哪个节点运行聚合等),那将非常有帮助。

如果它是相关的,那么我在 Elastic Search 7.5 上

【问题讨论】:

    标签: elasticsearch elasticsearch-query


    【解决方案1】:
    1. _search 查询发生时,摄取节点是否有任何角色可以执行? 如果它是一个专用的ingest 节点,则不是,如果它还保存数据(分片和副本),则不是。

    2. 当数据被索引时,数据节点是否有任何作用? 是的,数据节点实际上保存着数据(分片和副本),最终它们负责索引和搜索这些数据

    3. 在搜索数据时,是否有任何其他节点可以执行任何角色? 可以,请参考ES中co-ordinating role的职责。

    简而言之,摄取节点只是做数据的转换,数据节点实际持有数据,ES中所有角色都可以专用或共享给一个节点。

    以下是搜索请求中的步骤--

    1. 协调节点接收请求,它可以是专用节点或数据节点执行此工作(默认)。
    2. 协调节点将请求转发到数据节点,数据节点保存您的搜索请求的分片(主分片或副本分片)。
    3. 数据节点进行本地搜索并将结果发送回协调节点。
    4. 协调节点会聚合所有节点的前 10 个搜索结果(默认为 10 个)并返回响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多