2015-10-07 116 views
0

我剛開始使用es,我想知道如何編寫查詢來執行搜索,例如「城市1中的3張牀」或「學校2附近的城市1中的2張浴室」 根據我的理解是,我們可以使用同義詞處理3張牀位/牀位/牀位/牀位間,但我怎麼知道「城市1中的3張牀位」意味着我需要在城市地區的牀位和城市1上搜索3?使用ElasticSearch的複雜查詢

這是我的示例數據集。

{ 
    Address : 
     { 
      City : "City 1", 
      Zip : 21222 
     }, 
    Beds : 3, 
    Baths : 2, 
    Schools : 
     [ 
      "School 1", 
      "School 2" 
     ] 

}, 
{ 
    Address : 
     { 
      City : "City 2", 
      Zip : 21220 
     }, 
    Beds : 1, 
    Baths : 1, 
    Schools : 
     [ 
      "School 3", 
      "School 2" 
     ] 

} 

在此先感謝!

回答

0

城市1中的3張牀就像2條款之間的AND條件。使用bool,必須構造查詢。嘗試閱讀bool子句:必須,應該也不能。他們的組合將服務於你正在尋找的東西。

query: { 
    bool: { 
    must: [{ 
     term: { 
      address.city : { 
      value: City1 
      } 
      },{ 
      term: { 
      beds : { 
      value: 3 
      } 
     }] 
    }}