2016-08-21 72 views
0

Elasticsearch使您能夠查詢存在於或不在這些索引上的字段上的多個索引。Elasticsearch帶有地理邊界框查詢的多索引查詢

但是,如果所查詢的字段在所有請求的索引中都不存在,那麼當查詢多個帶有geo_bounding_box彈性的索引時會拋出異常。

似乎彈性檢查是否所需的字段映射爲地理點。

有沒有辦法實現這個查詢,而無需編輯映射並在所有indecies中添加所有geo_fileds?

+0

也許只包含搜索中包含地理域的索引。 – Val

+0

問題是,所有的索引都包含地理區域,但不具有相同的名稱。例如索引A.x_location,索引B.y_location以及在兩個字段中使用帶有should的bool查詢的查詢。 – User1234

回答

1

您可以使用indices query排列如下bool/should。這樣您就不會冒着用錯誤的字段名稱查詢索引的風險:

POST /indexA,indexB/_search 
{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "indices": { 
      "indices": [ 
       "indexA" 
      ], 
      "query": { 
       "geo_bounding_box": { 
       "x_location": {...}    } 
      } 
      } 
     }, 
     { 
      "indices": { 
      "indices": [ 
       "indexB" 
      ], 
      "query": { 
       "geo_bounding_box": { 
       "y_location": {...} 
       } 
      } 
      } 
     } 
     ] 
    } 
    } 
} 
+0

這是否適合您? – Val

+0

感謝您的回答。 它似乎工作,但現在我有奇怪的結果,使用應該返回來自兩個索引的所有文件,將其更改爲必須返回正確的文件,爲什麼多索引查詢的布爾查詢有區別? – User1234