我正在尝试使用ElasticSearch实现搜索系统。 我的问题在于对象的位置首先,搜索到的对象可以有不同类型的位置:
以下是一个例子:
Country = A
State = B
District = C
Currently I get all the objects that have the location :
Country = A and State = B and District = C
I want also find objects which have the location:
only Country = A
and
only Country = A and State = B
解释起来有点复杂,但原则是。
所以我创建了以下查询ElasticSearch:
"query" : {
[{"bool":{
"should":[
{"bool":{
"must":[
{"match":{"country":"-223"}},
{"match":{"state":"-3760"}},
{"match":{"district":"-8245"}}
]
}},
{"bool":{
"must":[
{"match":{"country":"-223"}},
{"match":{"state":"-3760"}},
{"match":{"district":""}}
]
}},
{"bool":{
"must":[
{"match":{"country":"-223"}},
{"match":{"state":""}},
{"match":{"district":""}}
]
}}
]
}}]
}
但它不起作用,我真的不知道我做错了什么。 我阅读了这个网站上的文档:
http://www.elasticsearch.org/guide/reference/query-dsl/bool-query/
我尝试了一切似乎对我的问题有用但却没有成功 有人可以帮我找到错误吗?
谢谢你。
答案 0 :(得分:1)
我这样做是通过不同的方式索引数据位。
对于每个文档,我在每个文档的位置字段中索引多个值,即:
country
country/state
country/state/district
如果我想找到某个国家/地区的所有内容,我会搜索位置:国家/地区,如果我想要某些状态我搜索位置:国家/地区
这具有对嵌套分面非常好的副作用。