我有一些數據,我試圖獲得所有具有特定月份且距目標點小於1.6km的結果。我正在使用PHP客戶端,所以我的查詢看起來像這樣。在同一個必須過濾器中不能有一個術語和geo_distance_range
$crimeSearch = [
'size' => 0,
'query' => [
'filtered' => [
'filter' => [
'bool' => [
'must' => [
'term' => [
'month' => $date,
],
'geo_distance_range' => [
'location' => [
'lat' => $lat,
'lon' => $lng,
],
'lt' => '1.6km',
],
],
],
],
],
],
'aggs' => [
'group_by_category' => [
'terms' => [
'field' => 'category',
],
],
],
];
我目前看到以下錯誤:
query_parsing_exception: No query registered for [location]
我的映射是這樣的:
"properties": {
"location": {
"type": "geo_point"
},
"category": {
"type": "string",
"index": "not_analyzed"
},
"month": {
"type": "string",
"index": "not_analyzed"
}
}
現在,如果我註釋掉無論是長期價值或者從該geo_distance_range值必須數組,然後我得到正確的結果。只有當它們都存在時,纔會出現此錯誤。
任何人都可以看到我的錯誤與我的查詢?
我已經嘗試將geo_distance_range移動到它自己的必須塊中,但是這似乎會帶回所有匹配必須過濾器而不是它們兩者的結果。
如果您需要更多信息,請詢問!
謝謝。
你正在使用什麼版本的ES? – ChintanShah25
我正在使用版本2.0.0。現在解決了。我只需要將我的每個必須過濾器都包裝在他們自己的數組中。不管怎麼說,還是要謝謝你。 –