我有以下Elasticsearch查询。
GET /index1,index2/type1,type2/_search?q=programming
假设我想从此搜索查询中排除index2
。 documentation 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。
答案 0 :(得分:5)
您需要编码 +
符号,因为它在URL字符串中被视为space
。请参阅space
"resource.id": " index1",
这将有效
GET /%2Bindex1,-index2/type1,type2/_search?q=programming
希望这会有所帮助!!