如何使用geoquery在elasticsearch 7中查询并获取不同姓名?可能吗?

2024-09-28 21:45:22 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有这样的数据:

{
'name': 'George',
'wore': 'Slacks',
'time': 'time',
'location': {'lat': xxx, 'lon', xxx}
},
{
'name': 'George'
'wore': 'Slacks',
'time': 'time',
'location': {'lat': xxx, 'lon', xxx}
},
{
'name': 'William'
'time': 'time'
'wore': 'Jeans',
'location': {'lat': xxx, 'lon', xxx}
}

我可以使用以下elasticsearch查询获得所有点的边界框:

{
    "query": {
        "bool" : {
            "must" : {
                "match_all" : {}
            },
            "filter" : {
                "geo_bounding_box" : {
                    "pin.location" : {
                        "top_left" : {
                            "lat" : 40.73,
                            "lon" : -74.1
                        },
                        "bottom_right" : {
                            "lat" : 40.01,
                            "lon" : -71.12
                        }
                    }
                }
            }
        }
    }
}

问题是,有很多点的“名称”是相同的,但位置/纬度/长度和时间是不同的。是否有一种方法可以让我获得所有不同名称的列表,而不是获得所有单个点的结果?或者至少算一次


Tags: 数据name名称timelocationelasticsearchxxx边界
1条回答
网友
1楼 · 发布于 2024-09-28 21:45:22

我不太明白你的意思。也许,您可以使用聚合术语查询。它的行为就像sql中的“分组方式”

获取/\u搜索:

{
    "aggs" : {
        "a1" : {
            "terms" : { "field" : "name" } 
        }
    }
}

相关问题 更多 >