2016-06-24 29 views
0

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

回答

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索引仅在该主机上可用。

在单个主机上本地化索引并不是一种好的做法,就好像该主机出现故障或遭到破坏一样,您可以保证丢失数据。

相关问题