负值之间的弹性搜索 DSL 查询范围(经度值示例)过滤器不起作用
Elastic search DSL query range between negative value (example for Longitude values) filter not working
我有一个包含客户值的索引,我需要能够过滤地图上经度值范围之间的记录。纬度过滤器有效。
我想知道它是否因为负值而没有过滤经度。
经过一番研究,我发现我可以尝试使用转义键,因为“-”可能会被错误解释。使用或不使用转义字符均无效。
- 注意 - 该范围内有记录,因为当我抓取整个索引时,我可以看到经度值在该范围内的记录。
我不知道还能尝试什么。任何建议将不胜感激。
示例:
不确定你的 longitude
字段的 data-type,因为 geo-point data type 不支持范围查询,如果你使用正常的整数,它会起作用,如下所示.
使用默认整数映射索引示例文档
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
}
带范围的搜索查询
POST my-idx-number-range/_search
{
"query": {
"bool": {
"filter": [
{
"range": {
"longitutde": {
"gte": -73,
"lte": 20
}
}
}
]
}
}
}
和搜索结果
"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
}
}
]
我有一个包含客户值的索引,我需要能够过滤地图上经度值范围之间的记录。纬度过滤器有效。 我想知道它是否因为负值而没有过滤经度。
经过一番研究,我发现我可以尝试使用转义键,因为“-”可能会被错误解释。使用或不使用转义字符均无效。
- 注意 - 该范围内有记录,因为当我抓取整个索引时,我可以看到经度值在该范围内的记录。
我不知道还能尝试什么。任何建议将不胜感激。
示例:
不确定你的 longitude
字段的 data-type,因为 geo-point data type 不支持范围查询,如果你使用正常的整数,它会起作用,如下所示.
使用默认整数映射索引示例文档
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
}
带范围的搜索查询
POST my-idx-number-range/_search
{
"query": {
"bool": {
"filter": [
{
"range": {
"longitutde": {
"gte": -73,
"lte": 20
}
}
}
]
}
}
}
和搜索结果
"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
}
}
]