2017-07-07 11 views
0

こんにちはElasticsearch gurus、私はあなたの助けが必要です!私は、フィルタのチェックボックスオプションとして名を表示しようとしているネストされたタイプのElasticsearch post_filterは集約でフィルタリングされません

"testLookup" : [ 
    { 
    "id": 1001, 
    "name": "test1" 
    }, 
    { 
    "id": 1002, 
    "name": "test2" 
    } 
] 

: 我々はElasticsearchのV5.4と 私はの形でelasticsearchで複数のネストされた型を持っているを使用しています。

私はちょっとそれがこのデモサイトで使用されているかのように、私はONLY影響を受けたフィルタオプションを更新して表示することができますので、基本的に集計をフィルタリングするpost_filterトップレベル要素を使用しようとしていた:http://demo.searchkit.co

"post_filter": { 
    "bool":{ 
     "must": [ 
    {  
     "nested" : { 
     "path" : "testLookup", 
     "query": { 
      "bool": { 
      "filter":{ 
       "bool":{ 
       "should":[ 
         { "term": { "perTestLookup.name.keyword": "Adele"}} 
     ] 
      } 
     } 
     } 
    } 
    } 
    }, 
       {  
    "nested" : { 
     "path" : "testLookup2", 
     "query": { 
     "bool": { 
      "filter":{ 
      "bool":{ 
       "should":[   
       { "term": { "perTestLookup2.name.keyword": "Gene" }} 
     ] 
      } 
     } 
     } 
    } 
    }  
    } 
    ] 
} 
} 

もし私が誤っていないのであれば、post_filterの機能は、検索要求が送信される前に各集約に対してフィルタを適用することだと思います。このフィルタをクリックすると、検索フィルタの要求ペイロードを調べることができます。フィルタチェックボックス。

しかし、post_filterを使用して集計にフィルタを適用することはできません。フィルタは適用されていません。これはなぜですか?ネストされた型のpost_filterはサポートされていませんか?

ヒントやガイダンスをいただければ幸いです。ありがとうございました!

答えて

0

注:私は検索キットの経験はありません。

Elasticsearchリクエスト内のpost_filterは、ヒット結果をさらに減らすために集計が計算された後に実行されます。 post_filterに関するドキュメントを参照してください。

これは、ファセット検索(カテゴリ別にフィルタリングすることを想像してください)では、集計内のすべてのカテゴリについてそのカテゴリのカウントを取得したいが、そのカテゴリあなたが探している文書。

これは、Elasticsearchの観点から予想される動作です。

関連する問題