gpt4 book ai didi

lucene - Elasticsearch 双面

转载 作者:行者123 更新时间:2023-11-29 02:48:30 25 4
gpt4 key购买 nike

我想运行一个 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
}
}
}
}'

它给出了比预期多一倍的结果……有什么想法吗?

答案中更相关的部分是...

_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},.....

因此,facet 分组是单独完成的(先按纬度再按经度)。

请注意,我不能仅按纬度或经度分组,因为多个记录可以共享纬度(但具有不同的经度),反之亦然。

最佳答案

您正在多个字段上创建 TermsFacet:纬度和经度。这意味着纬度和经度聚合在一起,因为它们是一个独特的领域。您会看到每个单个值的条目,可以是纬度或经度。您返回 74 个条目的事实证明您的索引中有 74 个不同的纬度和经度值,这是有道理的。你到底想达到什么目的?每个纬度经度对有一个分面条目?在这种情况下,您有两种选择:

  • 向包含对本身的索引添加一个附加字段,然后在其上分面
  • 使用术语脚本即时创建纬度经度对。看看 documentation了解更多。这是一个应该有帮助的例子,试一试:
{
"query" : {
"match_all" : { }
},
"facets" : {
"tags" : {
"terms" : {
"field" : "latitude",
"script" : "term + \"_\" + _source.longitude"
}
}
}
}

关于lucene - Elasticsearch 双面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12211732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com