在Elasticsearch查询中包含和排除索引

时间:2016-01-03 16:09:02

标签: elasticsearch

我有以下Elasticsearch查询。

GET /index1,index2/type1,type2/_search?q=programming

假设我想从此搜索查询中排除index2documentation states the following

  

它还支持通配符,例如:test *,以及能力   “添加”(+)和“删除”( - ),例如:+ test *, - test3。

据我了解,我应该能够做到以下几点。

GET /+index1,-index2/type1,type2/_search?q=programming

但是,我收到以下错误。

{
  "error": {
    "root_cause": [
      {
        "type": "index_not_found_exception",
        "reason": "no such index",
        "resource.type": "index_or_alias",
        "resource.id": " index1",
        "index": " index1"
      }
    ],
    "type": "index_not_found_exception",
    "reason": "no such index",
    "resource.type": "index_or_alias",
    "resource.id": " index1",
    "index": " index1"
  },
  "status": 404
}

如果我删除加号和减号,查询运行正常。如果我添加一个通配符,它​​似乎工作,例如以下查询。

GET /index1,-*index2/type1,type2/_search?q=programming

但是,这不是我想要的。

当我使用加号和减号来包含或排除索引时,为什么我的查询不起作用?我误解了什么吗?

我正在使用Elasticsearch 2.1。

1 个答案:

答案 0 :(得分:5)

您需要编码 +符号,因为它在URL字符串中被视为space。请参阅space

中的"resource.id": " index1",

这将有效

GET /%2Bindex1,-index2/type1,type2/_search?q=programming

希望这会有所帮助!!