I have a index with values of customers I need to be able to filter the records between ranges for longitude values on a map. The filter for latitude works. I was wondering if it wasn't filtering longitude because of negative values.
After some research I found out that I could try using an escape key because '-' could be interpreted wrong. Neither with or without the escape characters worked.
- note - there are records between that range because when I grab the whole index I can see the records with longitude values between the range.
I have no clue what else I can try. Any advice would be greatly appreciated.
Example :
CodePudding user response:
Not sure the data-type of your longitude
field, as geo-point data type doesn't support the range queries, and if you use the normal integer than it works, as shown below.
Index sample documents with default integer mapping
put my-idx-number-range/_doc/4
{
"longitutde" : -10
}
put my-idx-number-range/_doc/4
{
"longitutde" : 20
}
put my-idx-number-range/_doc/4
{
"longitutde" : 10
}
put my-idx-number-range/_doc/4
{
"longitutde" : 50
}
Search query with ranges
POST my-idx-number-range/_search
{
"query": {
"bool": {
"filter": [
{
"range": {
"longitutde": {
"gte": -73,
"lte": 20
}
}
}
]
}
}
}
And search result
"hits" : [
{
"_index" : "my-idx-number-range",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.0,
"_source" : {
"longitutde" : -20
}
},
{
"_index" : "my-idx-number-range",
"_type" : "_doc",
"_id" : "2",
"_score" : 0.0,
"_source" : {
"longitutde" : 20
}
},
{
"_index" : "my-idx-number-range",
"_type" : "_doc",
"_id" : "3",
"_score" : 0.0,
"_source" : {
"longitutde" : 10
}
}
]