use*_*791 6 lucene elasticsearch
我想运行一个弹性搜索查询,它通过两个不同字段(纬度和经度)的组合对数据进行分组
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
}
}
}
}'
Run Code Online (Sandbox Code Playgroud)
它提供了比预期更多的结果......任何想法?
答案的相关部分越多......
_shards":{
"total":5,
"successful":5,
"failed":0
},
"hits":{
"total":**37**,
"max_score":3.9314494,
"hits":[{
Run Code Online (Sandbox Code Playgroud)
总命中数,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},.....
Run Code Online (Sandbox Code Playgroud)
因此,分面分组是完全分开的(按纬度,然后是经度).
请注意,我不能仅按纬度或经度进行分组,因为多个记录可以共享纬度(但具有不同的经度)或反之亦然.
您正在多个字段上创建TermsFacet:纬度和经度。这意味着纬度和经度聚合在一起,因为它们是一个独特的字段。您会看到每个单个值的条目,该值可以是纬度或经度。您返回 74 个条目的事实证明您的索引中有 74 个不同的纬度和经度值,这是有道理的。您到底想实现什么目标?每个纬度经度对有一个方面条目?在这种情况下,您有两个选择:
Run Code Online (Sandbox Code Playgroud){ "query" : { "match_all" : { } }, "facets" : { "tags" : { "terms" : { "field" : "latitude", "script" : "term + \"_\" + _source.longitude" } } } }
| 归档时间: |
|
| 查看次数: |
2030 次 |
| 最近记录: |