2016-08-21 5 views
0

Elasticsearchを使用すると、インデックスに存在するフィールドまたは存在しないフィールドの複数のインデックスを照会できます。ジオバウンディングボックスクエリを使用したElasticsearchマルチインデックスクエリ

しかし、geo_bounding_boxエラスティックで複数のインデックスをクエリすると、クエリされたフィールドが要求されたすべてのインデックスに存在しない場合、例外がスローされます。

必要なフィールドがジオポイントとしてマップされているかどうかは、弾性チェックのようです。

マッピングを編集せずにこのクエリを実行し、すべてのindeciesですべてのgeo_filedを追加する方法はありますか?

+0

おそらく、ジオフィールドを含むインデックスのみをインデックスに含めるようにしてください。 – Val

+0

すべてのインデックスにはジオフィールドが含まれていますが、同じ名前は含まれていません。インデックスA.x_location、インデックスB.y_location、boolクエリを使用して両方のフィールドにshouldを使用してクエリを実行します。 – User1234

答えて

1

以下のようにbool/shouldの配列でindices queryを使用できます。このように、間違ったフィールド名を持つインデックスにクエリを実行するリスクはありません。

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

あなたの答えをありがとう。 それは動作しているようですが、今私は奇妙な結果を持っている、両方のインデックスからすべてのドキュメントを返す必要があります、正しい文書を返す必要があります変更する必要があります、なぜ複数のインデックスクエリのboolクエリの違いはありますか? – User1234

関連する問題