2016-11-18 12 views
0

私はElasticsearchインデックスを作成しました。ネストされたフィールドの1つは次のようにマッピングされています。 ESのバージョンの詳細に結果を返すネストされたオブジェクトを照会するElasticsearch

"groups": { 
    "type": "nested", 
    "properties": { 
     "name": { 
      "type": "text" 
     }, 
     "value": { 
      "type": "text" 
     } 
    } 
} 

、その5.0と私はクライアント側で公式Pythonクライアントelasticsearch-pyを使用しています。 に基づいてこのネストされたフィールドを照会したいとします。

という名前のという名前のフィールドがあり、のテキストタイプのフィールドがあるとします。 Aで始まり、指定されたグループに属するすべての名前を探したい。

いくつかのサンプルデータ、

グループ - HR(名= HR、値=時間)、マーケティング(名=マーケティング、値=マーケティング) 名 - アンドリュー、アルファ、バリー、ジョン

アンドリューアルファはグループHRに属します。

これに基づき、私はESのドキュメントを参照しますが、このクエリは何も返さないクエリこのクエリの

{ 
    'query': { 
     'bool': { 
      'must': [{ 
       'match_phrase_prefix': { 
        'title': 'A' 
       } 
      }] 
     }, 
     'nested': { 
      'path': 'groups', 
      'query': { 
       'bool': { 
        'must': [{ 
         'match': { 
          'groups.value': 'hr' 
         } 
        }] 
       } 
      } 
     } 
    } 
} 

を試してみました。誰かがこのクエリやマッピング自体が間違っていることを指摘できれば幸いです。

答えて

2

あなたはほとんどそこにいる、あなたは、単にbool/mustクエリ内nestedクエリを移動する必要があります。

{ 
    'query': { 
     'bool': { 
      'must': [ 
       { 
       'match_phrase_prefix': { 
        'title': 'A' 
       } 
       }, 
       { 
       'nested': { 
        'path': 'groups', 
        'query': { 
        'bool': { 
         'must': [{ 
          'match': { 
          'groups.value': 'hr' 
          } 
         }] 
        } 
        } 
       } 
       } 
      ] 
     } 
    } 
} 
+0

私は望ましい結果を得るために、私のマッピングを更新する必要があるでしょうか? –

+0

それは働いた。ありがとう!!答えは受け入れられますが、SOは今私を止めています!それが許可されたらそれを行います。 –

+0

マッピングは問題ありません。クエリの形式が正しくありませんでした – Val

関連する問題