根据文档建议使用fake index per user。 ES版本1.6.0有时无法按预期运行。
检查别名:
curl localhost:9200/testbig/_alias/<userId>
{"<indexname>":{"aliases":{"<userId>":{"filter":{"term":
{"userId":"<userId>"}},"index_routing":"<userId>","search_routing":"<userId>"}}
}}
但是尝试更新文档:
curl -XPOST localhost:9200/<userId>/<type>/<id>/_update -d
'{"doc":{"userId":"<userId>","field1":"val1"}}'
我得到了
{ "error": "ElasticsearchIllegalArgumentException[Alias [<userId>] has
index routing associated with it [<userId>], and was provided with
routing value [<DIFFERENTuserId>], rejecting operation]",
"status": 400 }
答案 0 :(得分:0)
如果其他人遇到类似的问题,原因是:
如果您开始为每个用户使用实际的单独索引,则可以使用具有相同ID的记录,即
之类的路径localhost:9200/userid1/type/id1
localhost:9200/userid2/type/id1
但是当userids
只是别名时,它们当然对应于同一文档。因此,路由会在后续更新时发生冲突。