2017-06-22 61 views
0

我在lastName字段中按照某種方式出現必須具有「Thomas」的文檔來查詢我的索引,並且還應根據geo_point查詢返回返回結果。 geo_point查詢出現在should子句中,因爲可能有多個傳入。如果有任何匹配,我希望文檔以命中形式返回。任何想法爲什麼這不起作用?我遵循文檔as outlined here爲什麼不是使用組合查詢的Elasticsearch查詢返回預期結果?

「應:至少其中一個查詢必須匹配等效的OR。」

{ 
"sort": [{ 
    "_score": { 
     "order": "desc" 
    } 
}], 
"query": { 
    "bool": { 
     "must": [{ 
      "query_string": { 
       "default_field": "lastName", 
       "query": "Thomas" 
      } 
     }], 
     "should": [{ 
      "geo_distance": { 
       "distance": "5mi", 
       "coordinates": "32.798913, -79.998085" 
      } 
     }] 
    } 
} 

}

+0

你肯定你的'coordinates'字段類型'geo_point'? – Val

+0

是的,的映射是正確的 – sean

+0

你確定'座標'首先是指定緯度,然後是經度而不是其他的方式嗎? – Val

回答

0

嵌套是很重要的。在上面的代碼中,shouldmust並排;因此,其功能類似於「查找姓氏像托馬斯或任何在查爾斯頓內生活的5米的人」。下面將geo_point查詢與任何其他must子句嵌套在一起。

「尋找像托馬斯(5MI查爾斯頓OR 5MI內抵達亞特蘭大OR等姓氏。」

{ 
    "sort": [{ 
     "_score": { 
      "order": "desc" 
     } 
    }], 
    "query": { 
     "bool": { 
      "must": [{ 
        "query_string": { 
         "default_field": "lastName", 
         "query": "Thomas" 
        } 
       }, 
       { 
        "bool": { 
         "should": [{ 
          "geo_distance": { 
           "distance": "5mi", 
           "coordinates": "32.798913, -79.998085" 
          } 
         }] 
        } 
       } 
      ] 
     } 
    } 
} 
相關問題