I'm using Elasticsearch 6.3 and spring-data-elasticsearch, I have the index restaurant having the mapping below :
{
"mapping": {
"restaurant": {
"properties": {
"id": {
"type": "keyword"
},
"name": {
"type": "text",
"store": true,
"analyzer": "custom_analyzer",
"search_analyzer": "custom_search_analyzer"
},
"locations": {
"type": "nested",
"include_in_parent": true,
"properties": {
"id": {
"type": "long"
},
"fullAddress": {
"type": "text"
},
"geo": {
"type": "geo_point"
},
"phone": {
"type": "keyword"
}
}
},
"menus": {
"type": "nested",
"properties": {
"id": {
"type": "long"
},
"name": {
"type": "text",
"store": true,
"analyzer": "custom_analyzer",
"search_analyzer": "custom_search_analyzer"
}
}
}
}
}
}
}
This is an example of a document of this mapping :
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "restaurants",
"_type": "restaurants",
"_id": "1",
"_score": 1,
"_source": {
"id": 1,
"name": "Mc Donald",
"menus": [
{
"id": 7097,
"name": "Big Fish"
},
{
"id": 13899,
"name": "Big Mac"
}
],
"locations": [
{
"id": 1,
"fullAddress": "7 Bd Solférino, 59000 Lille",
"geo": { "lat": 50.6423461,"lon": 3.1390441},
"phone": "0305060804"
},
{
"id": 2,
"fullAddress": "7 Rue Nationale, 75000 Paris",
"geo": { "lat": 40.6423461,"lon": -7.1390441},
"phone": "0305060804"
}
]
}
}
]
}
}
I try to search all the restaurants around me, for example, I search the nearest Mc Donald.
I tryed the 2 queries below but they return emty list :
- Query 1: (Using post filtering)
GET restaurants/_search
{
"query": {
"match": {
"name": "donald"
}
},
"post_filter": {
"nested": {
"path": "locations",
"query": {
"geo_distance": {
"distance": "10km",
"locations.geo": [50.6423461, 3.1390441]
}
}
}
}
}
- Query 2: (Using filtering inside query)
GET restaurants/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "donald"
}
}
],
"filter": {
"nested": {
"path": "locations",
"query": {
"geo_distance": {
"distance": "10km",
"locations.geo": [50.6423461,3.1390441]
}
},
"inner_hits": {}
}
}
}
}
}
PLEASE, could someone tell me what I do wrong in my mapping or queries.
Thx in advance