我想运行一个弹性搜索查询,它通过两个不同字段(纬度和经度)的组合对数据进行分组
curl -XGET http://www.my_server:9200/idx_occurrence/Occurrence/_search?pretty=true -d '{
"query": {
"query_string" : {
"fields" : ["genus_interpreted","dataset"],
"query": "Pica 2",
"default_operator" : "AND"
}
},
"facets": {
"test": {
"terms": {
"fields" :["decimalLatitude","decimalLongitude"],
"size" : 500000000
}
}
}
}'
它提供了比预期更多的结果......任何想法?
答案的相关部分越多......
_shards":{
"total":5,
"successful":5,
"failed":0
},
"hits":{
"total":**37**,
"max_score":3.9314494,
"hits":[{
总点击次数,37是查询的结果,如果我不应用这些方面。这个总数是方面总数的一半(见下文)
"facets":{
"test":{
"_type":"terms",
"missing":0,
"total":**74**,
"other":0,
"terms":[
{"term":"167.21665954589844","count":5},
{"term":"167.25","count":4},
{"term":"167.14999389648438","count":4},
{"term":"167.1041717529297","count":4},
{"term":"-21.04166603088379","count":4},.....
因此,分面分组是完全分开的(按纬度,然后是经度)。
请注意,我不能仅按纬度或经度进行分组,因为多个记录可以共享纬度(但经度不同)或反之亦然。
答案 0 :(得分:4)
您正在多个字段上制作TermsFacet:纬度和经度。这意味着纬度和经度会聚合在一起,因为它们是唯一的字段。您会看到每个值的条目,可以是纬度或经度。您获得74个条目的事实证明您的索引中有74个不同的纬度和经度值,这是有道理的。你想要达到什么目的?每个纬度经度对的一个方面条目?在这种情况下,您有两个选择:
{ "query" : { "match_all" : { } }, "facets" : { "tags" : { "terms" : { "field" : "latitude", "script" : "term + \"_\" + _source.longitude" } } } }