【问题标题】:Can we ensure elasticsearch call locally?我们可以确保在本地调用 elasticsearch 吗?
【发布时间】:2016-10-26 14:55:23
【问题描述】:

假设我有一个服务,并且 elasticsearch 在多个主机上运行。如果我确保每个主机都包含完整的弹性搜索索引(通过具有副本> = numberOfHosts-1),是否可以确保特定主机上的服务调用仅在同一主机的索引中搜索(即没有弹性搜索调用跨主机)?

【问题讨论】:

    标签: search elasticsearch lucene information-retrieval


    【解决方案1】:

    使用shard allocation filtering,您可以确保索引的分片仅驻留在单个主机上。但是请注意,这样做,如果您的主机出现故障,您将丢失数据。

    PUT test/_settings
    {
      "index.routing.allocation.include._ip": "192.168.1.1",
      "index.routing.allocation.exclude._ip": "192.168.1.2,192.168.1.3"
    }
    

    因此,如果您直接在192.168.1.1 上查询test 索引,则可以确定192.168.1.1 和满足您请求的节点之间不会有任何对话。

    如果您将查询发送到客户端节点或其他类型的负载平衡器节点,则保证您的请求会直接路由到 192.168.1.1,因为集群会知道 test 索引仅在该主机上可用.

    在单个主机上本地化索引不是一个好习惯,就好像该主机发生故障或损坏一样,您肯定会丢失数据。

    【讨论】:

      猜你喜欢
      • 2021-09-15
      • 1970-01-01
      • 2022-01-04
      • 2015-03-04
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多