Alias 上的 ElasticSearch 不工作
ElasticSearch on Alias not working
我设置了以下别名:
"items": {
"aliases": {
"items_0": {
"filter": {
"term": {
"accountid": "0"
}
},
"index_routing": "0",
"search_routing": "0"
}
}
}
当我在项目索引中搜索 accountid = 0 的文档时,它被返回。然而,当我使用索引 items_0 搜索文档时,它没有被返回。我使用完全相同的搜索条件,只是将索引名称从项目更改为 items_0。我在这里遗漏了什么吗?
很可能您没有使用与您在别名中指定的值相同的 _routing
值对文档编制索引。
例如,对于这些文档(其中指定了 _routing
):
POST /items/test/_bulk
{"index":{"_id":1,"_routing":0}}
{"accountid": 0}
{"index":{"_id":2,"_routing":0}}
{"accountid": 0}
{"index":{"_id":3,"_routing":0}}
{"accountid": 5}
{"index":{"_id":4,"_routing":0}}
{"accountid": 3}
运行
GET /items_0/_search
{
"query": {
"filtered": {
"filter": {
"term": {
"accountid": 0
}
}
}
}
}
Returns 正确的结果。因此,您需要确保您的文档已使用您在别名中使用的 _routing
id 编制索引。
我设置了以下别名:
"items": {
"aliases": {
"items_0": {
"filter": {
"term": {
"accountid": "0"
}
},
"index_routing": "0",
"search_routing": "0"
}
}
}
当我在项目索引中搜索 accountid = 0 的文档时,它被返回。然而,当我使用索引 items_0 搜索文档时,它没有被返回。我使用完全相同的搜索条件,只是将索引名称从项目更改为 items_0。我在这里遗漏了什么吗?
很可能您没有使用与您在别名中指定的值相同的 _routing
值对文档编制索引。
例如,对于这些文档(其中指定了 _routing
):
POST /items/test/_bulk
{"index":{"_id":1,"_routing":0}}
{"accountid": 0}
{"index":{"_id":2,"_routing":0}}
{"accountid": 0}
{"index":{"_id":3,"_routing":0}}
{"accountid": 5}
{"index":{"_id":4,"_routing":0}}
{"accountid": 3}
运行
GET /items_0/_search
{
"query": {
"filtered": {
"filter": {
"term": {
"accountid": 0
}
}
}
}
}
Returns 正确的结果。因此,您需要确保您的文档已使用您在别名中使用的 _routing
id 编制索引。