2017-07-17 6 views
0

ネストされたクエリ用語がhttps://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-nested-query.htmlをフィルタリングし、ブール用語フィルタhttps://www.elastic.co/guide/en/elasticsearch/reference/5.5/query-dsl-bool-query.htmlElasticsearch 5は、ブール条件およびネストされた用語のフィルタを組み合わせる

ネストされたオブジェクトの配列であるためのドキュメントがあります。オブジェクトだけではありません。それは簡単なブール項フィルタを使用することができない点です。

私のクエリは次のようになります。私は本当のより多くの用語のフィルタを持っているので

{ 
    "query": { 
    "bool": { 
     "filter": [ 
     { 
      "term": { 
      "access_account.nid": 17, 
      "destroyed_at": null 
      } 
     } 
     ], 
     "must": { 
     "match_all": {} 
     } 
    }, 
    "nested": { 
     "path": "categories", 
     "query": { 
     "bool": { 
      "filter": [ 
      { 
       "terms": { 
       "categories.id": [ 
        15, 17 
       ] 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 

フィルタは、アレイです。

私は、この応答に reason": "[bool] malformed query, expected [END_OBJECT] but found [FIELD_NAME]"

を得た親/ネストされた用語のフィルタを組み合わせるためにどのように任意の解決策はありますか?公式文書は役に立たない。

マイエラスティックバージョンは5.4

ありがとうございます。

答えて

2

あなたはほとんどそこにいる、あなたのnestedクエリがちょうどbool/filter句の内部で行く必要があります:

{ 
    "query": { 
    "bool": { 
     "filter": [ 
     { 
      "term": { 
      "access_account.nid": 17, 
      "destroyed_at": null 
      } 
     }, 
     { 
      "nested": { 
      "path": "categories", 
      "query": { 
       "bool": { 
       "filter": [ 
        { 
        "terms": { 
         "categories.id": [ 
         15, 
         17 
         ] 
        } 
        } 
       ] 
       } 
      } 
      } 
     } 
     ] 
    } 
    } 
} 
+0

あなたは正しいです、どうもありがとうございました! :) – rado

+0

うれしかったよ! – Val

+0

とても助けになります。最初はElasticsearchクエリパターンが混乱していますが、現在はより明確です。 – rado

関連する問題