我对弹性搜索非常新。我正面临构建查询的问题。我的文档结构如下:
{
latlng: {
lat: '<some-latitude>',
lon: '<some-longitude>'
},
gmap_result: {<Some object>}
}
我正在对lat-long的列表进行搜索。对于每个坐标,我获取的结果都在100米以内。我已经能够做到这一点。但是,棘手的部分是我不知道输出中的哪个结果对应于哪个查询项。我认为这需要在某种程度上使用聚合,但我目前对如何继续使用这一点毫无头绪。
答案 0 :(得分:1)
聚合查询是正确的方法。你可以在这里了解它们:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html
以下是一个例子。在此示例中,我使用match
查询在字段test
中查找单词title
的所有实例,然后汇总字段status
以计算结果数使用每个状态中的test
字样。
GET /my_index/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"title": "*test*"
}
}
]
}
},
"aggs": {
"count_by_status": {
"terms": {
"field": "status"
}
}
},
"size": 0
}
结果如下:
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 346,
"max_score": 0,
"hits": []
},
"aggregations": {
"count_by_status": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "Open",
"doc_count": 283
},
{
"key": "Completed",
"doc_count": 36
},
{
"key": "On Hold",
"doc_count": 12
},
{
"key": "Withdrawn",
"doc_count": 10
},
{
"key": "Declined",
"doc_count": 5
}
]
}
}
}
如果您提供查询,则可以帮助我们提供更具体的汇总查询供您使用。