Я пытаюсь сделать запрос с фильтром по моему индексу, но когда я пытаюсь фильтровать по любому атрибуту в сопоставлении, запрос не возвращает результата.
Запрос следующий, если я просто запускаюс частью geo_distance я получаю результаты.Я хотел бы отфильтровать результаты, используя одно из свойств в сопоставлении (в данном случае рейтинг, но это может быть город, штат и т. Д.).Запрос генерируется в Java через QueryBuilder из библиотекиasticsearch (v 52.0).Но сейчас я пытаюсь понять, как создать рабочий запрос и выполнить его через CURL.
{
"query": {
"bool": {
"filter": [
{
"geo_distance": {
"geometry.coordinates": [
12.3232,
12.2323
],
"distance": 200000,
"distance_type": "plane",
"validation_method": "STRICT",
"ignore_unmapped": false,
"boost": 1
}
},
{
"bool": {
"must": [
{
"terms": {
"rating": [
"0"
],
"boost": 1
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
}
}
Если я запускаю фильтрацию запросов по почтовому индексу или id, это работает.Например, запрос, подобный следующему:
{"query":{"bool":{"filter":{"term":{"zipCode":"111111"}}}}}
Фрагмент моего отображения такой:
{
"my_index": {
"mappings": {
"poielement": {
"dynamic_templates": [
{
"suggestions": {
"match": "suggest_*",
"mapping": {
"analyzer": "my_analyzer",
"copy_to": "auto_suggest",
"search_analyzer": "my_analyzer",
"store": true,
"type": "text"
}
}
},
{
"integers": {
"match_mapping_type": "long",
"mapping": {
"type": "text"
}
}
},
{
"geopoint": {
"match": "coordinates",
"mapping": {
"type": "geo_point"
}
}
},
{
"property": {
"match": "*",
"mapping": {
"analyzer": "my_analyzer",
"search_analyzer": "my_analyzer"
}
}
}
],
"date_detection": false,
"numeric_detection": false,
"properties": {
"city": {
"type": "text",
"analyzer": "my_analyzer"
},
"country": {
"type": "text",
"analyzer": "my_analyzer"
},
"geometry": {
"properties": {
"coordinates": {
"type": "geo_point"
},
"type": {
"type": "text",
"analyzer": "my_analyzer"
}
}
},
"id": {
"type": "text"
},
"name": {
"type": "keyword"
},
"rating": {
"type": "text"
},
"total_rate": {
"type": "text",
"analyzer": "my_analyzer"
},
"type": {
"type": "text",
"analyzer": "my_analyzer"
},
"zipCode": {
"type": "text"
}
}
}
}
}
}
Когда я получаю данные с помощью http://elasticsearchpat/my_index/_search, данные выглядят так
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 4,
"successful": 4,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 7517,
"max_score": 1,
"hits": [
{
"_index": "my_index",
"_type": "poielement",
"_id": "58768",
"_score": 1,
"_source": {
"zipCode": 111111,
"country": "USA",
"city": "Portland",
"rating": 0,
"type": "",
"id": 123,
"geometry": {
"coordinates": [
12.205061,
12.490463
],
"type": "Point"
}
}
}
]
}
}
Буду очень признателен за любую помощь.
Спасибо