#elasticsearch #elastic-stack
#elasticsearch #эластичный стек
Вопрос:
Я пытался создать поисковый запрос со значениями в 15 миллионов радиостанций и между 3 неделями. Я попытался выполнить этот запрос:
"query": {
"bool": {
"must": {
"match_all": {}
}
, "filter": [
{
"geo_distance": {
"distance": "1000km",
"geoLocation": {
"lat": 31.966467334184614,
"lon": 35.83242623178664
}
}
,
"range": {
"map_date": {
"gte": "now-3w/w",
"lte": "now/w"
}
}
}
]
}}
Моя дата: map_date, а моя географическая точка — геолокация
Я получаю этот ответ :
{
"error" : {
"root_cause" : [
{
"type" : "parsing_exception",
"reason" : "[geo_distance] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
"line" : 18,
"col" : 8
}
],
"type" : "x_content_parse_exception",
"reason" : "[18:8] [bool] failed to parse field [filter]",
"caused_by" : {
"type" : "parsing_exception",
"reason" : "[geo_distance] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
"line" : 18,
"col" : 8
}
},
"status" : 400
}
Помогите мне, пожалуйста, выяснить, что я делаю неправильно
Ответ №1:
Ваша часть фильтра была неправильно сформирована, попробуйте :
{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": [
{
"geo_distance": {
"distance": "1000km",
"geoLocation": {
"lat": 31.966467334184614,
"lon": 35.83242623178664
}
}
},
{
"range": {
"map_date": {
"gte": "now-3w/w",
"lte": "now/w"
}
}
}
]
}
}
}
В вашем массиве фильтров вы перечисляете список {}, взгляните на:
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html