Мне нужно получить последнюю зарегистрированную запись для серийного номера или серийных номеров в ограниченной области, а также я должен кластеризовать эти записи при точности масштабирования на карте.
Я использую Elasticsearch, и я сопоставил свой документ в этой форме:
{
"mappings": {
"AssetStatus": {
"properties": {
"location": {
"type": "geo_point"
},
"createdate": {
"type": "date"
},
"serialnumber": {
"type": "text",
"fielddata": "true"
}
}
}
}
}
Таким образом, я написал этот запрос.
{
"query": {
"bool": {
"must": [
{
"term": {
"serialnumber": "sn2"
}
},
{
"geo_bounding_box": {
"location": {
"top_left": "52.4, 4.9",
"bottom_right": "52.3, 5.0"
}
}
}
],
"must_not": [],
"should": []
}
},
"from": 0,
"size": 0,
"aggregations": {
"SerialNumberGroups": {
"terms": {
"field": "serialnumber"
},
"aggs": {
"tops": {
"top_hits": {
"sort": [
{
"createdate": {
"order": "desc"
}
}
],
"size": 1
},
"aggs": {
"geohash_grid": {
"field": "location",
"precision": 12
}
}
}
}
}
}
}
В этом запросе сначала я ограничиваю документы в зависимости от их серийных номеров и их местоположения, поэтому я группирую по запросу по серийному номеру и по порядку создания, чтобы получить последнюю зарегистрированную запись каждого серийного номера в области.
проблема в последней части запроса, когда я должен кластеризовать результат с geohash_grid.
Я получаю эту ошибку
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "Expected [START_OBJECT] under [field], but got a [VALUE_STRING] in [geohash_grid]",
"line": 1,
"col": 374
}
],
"type": "parsing_exception",
"reason": "Expected [START_OBJECT] under [field], but got a [VALUE_STRING] in [geohash_grid]",
"line": 1,
"col": 374
},
"status": 400