为了为我的项目创建 Multi-Tenancy 架构。
我创建了一个带有索引“tenant”的elasticsearch集群
"tenant" : { "some_type" : { "_routing" : { "required" : true, "path" : "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”,但只得到部分结果,而查询“tenant”索引则直接返回完整结果。
为什么?
我确定路由应该查询tenantId = 2所在的文档的所有分片。
最佳答案
在elasticsearch中创建别名后,您只需使用别名即可执行所有操作。索引,更新或搜索。
尝试再次为数据重新建立索引,并检查是否可能(如果是测试索引,希望如此)。
删除所有索引。
curl -XDELETE 'localhost:9200/' # Warning:!! Dont use this in production.
Use this command only if it is test index.
再次创建索引。再次创建别名。对别名进行所有索引,搜索和删除操作。甚至数据的导入也应该通过别名来完成。
关于elasticsearch - Elasticsearch查询别名并通过路由给出部分结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20592627/