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 编制索引。