Alias上的ElasticSearch无法正常工作

时间:2015-07-02 21:54:01

标签: elasticsearch alias

我设置了以下别名:

"items": {
    "aliases": {
        "items_0": {
            "filter": {
                "term": {
                    "accountid": "0"
                }
            },
            "index_routing": "0",
            "search_routing": "0"
        }
    }
}

当我在accountid = 0的项目索引中搜索文档时,会返回该文档。然而,当我使用items_0的索引搜索文档时,它不会被返回。我使用完全相同的搜索条件,只是将索引名称从items更改为items_0。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

很可能您没有使用与您在别名中指定的值相同的_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
        }
      }
    }
  }
}

返回正确的结果。因此,您需要确保使用别名中使用的_routing ID索引文档。