Elasticsearch使用路由查询别名,提供部分结果

时间:2013-12-15 08:26:03

标签: elasticsearch

努力为我的项目创建多租户架构。 我创建了一个带有索引'tenant'的弹性搜索集群

  

“租户”:{       “some_type”:{         “_routing”:{           “必需”:是的,           “路径”:“tenantId”         },

现在,

我还创建了一些别名 -

"tenant" : {
"aliases" : {
  "tenant_1" : {
    "index_routing" : "1",
    "search_routing" : "1"
  },
  "tenant_2" : {
    "index_routing" : "2",
    "search_routing" : "2"
  },
  "tenant_3" : {
    "index_routing" : "3",
    "search_routing" : "3"
  },
  "tenant_4" : {
    "index_routing" : "4",
    "search_routing" : "4"
  }

我在tenantId = 2

中添加了一些数据

毕竟,我试图查询'tenant_2',但我只获得了部分结果,而查询'租户'索引则直接返回完整结果。

为什么?

我确信路由应该查询tenantId = 2的文档所在的所有分片。

1 个答案:

答案 0 :(得分:0)

在elasticsearch中创建别名后,您必须仅使用别名执行所有操作。无论是索引,更新还是搜索。

再次尝试重新索引数据并检查是否可能(如果是测试索引,我希望如此)。

删除所有索引。

curl -XDELETE 'localhost:9200/' # Warning:!! Dont use this in production.
                                  Use this command only if it is test index.

再次创建索引。再次创建别名。对别名进行所有索引,搜索和删除操作。甚至导入数据也应该通过别名来完成。