此查询出现问题,当我使用geo_distance过滤器时,查询没有返回任何内容。当我删除它时,我得到了适当的结果。查询如下:
#convert all elements to string first, and then compare with '[]'. Finally use mask function to mark '[]' as na
df.mask(df.applymap(str).eq('[]'))
Out[1063]:
0 1 2 3 4
0 1 hello NaN None 3.14
1 2017-06-30 2 a b NaN
2 2016-08-14 00:00:00 x NaN z w
如果有人给我一个提示,我将不胜感激。
更新 当我使用相同的查询逻辑运行Elasticsearch Ruby DSL时,我得到了正确的结果:
GET _search
{
"query": {
"bool": {
"filter": {
"geo_distance": {
"distance": 20,
"distance_unit": "km",
"coordinates": [48.8488576, 2.3354223]
}
},
"must": {
"term": {
"_type": {
"value": "staff"
}
}
},
"must_not": [
{
"term": {
"cabinet.zipcode": {
"value": "75006"
}
}
},
{
"term": {
"next_availability_in_days": {
"value": "-1"
}
}
}
]
}
}
}
}}
所以这真的很奇怪,我不确定ES语法中出了什么问题,但它绝对应该按预期工作。 感谢。
答案 0 :(得分:0)
您输入的范围内可能没有任何内容。
尝试将"distance": 20
字段增加到"distance": 500
,然后检查结果。例如,这两个地理点[0,0]和[0,1]之间的距离约为138.3414KM。
另一个建议是摆脱"distance_unit"
字段并放置
并将KM放在"distance"
字段中,如下所示:
{
"query": {
"bool": {
"filter": {
"geo_distance": {
"distance": "20km",
"coordinates": [
48.8488576,
2.3354223
]
}
}
}
}
}