2017-12-05 18 views
0

集計セクションの「内部」部分の集計フィルタにフィルタを2つ追加します。追加する必要がある他の2つのフィルタは、クエリセクションにあります。このコードを正しく動作させるには、最初のセクションから集約エリアに2番目と3番目のネストされたフィルタを追加するだけで済みます。現在は、「givingMatch.db_type」という用語でフィルタリングしています。これらの結果を与えるネストされた集約フィルタに複数のフィルタを追加するElasticsearch

GET /testserver/_search 
{ 
    "query": { 
     "bool": { 
      "filter": [ 
      { 
        "nested": { 
         "path": "givingMatch", 
         "query": { 
          "bool": { 
           "filter": { 
            "terms": { 
             "givingMatch.db_type": [ 
              "FECmatch", 
              "StateMatch" 
             ] 
            } 
           } 
          } 
         } 
        } 
       }, 
       { 
        "nested": { 
         "path": "givingMatch", 
         "query": { 
          "bool": { 
           "filter": { 
            "range": { 
             "givingMatch.Status": { 
              "from": 0, 
              "to": 8 
             } 
            } 
           } 
          } 
         } 
        } 
       }, 
       { 
        "nested": { 
         "path": "givingMatch", 
         "query": { 
          "bool": { 
           "filter": { 
            "range": { 
             "givingMatch.QualityScore": { 
              "from": 17 
             } 
            } 
           } 
          } 
         } 
        } 
       } 
      ] 
     } 
    }, 
    "aggs": { 
     "categories": { 
      "nested": { 
       "path": "givingMatch" 
      }, 
      "aggs": { 
       "inner": { 
       "filter": { 
        "terms": { 
        "givingMatch.db_type":["FECmatch","StateMatch"] 
        } 
       }, 
       "aggs":{ 
        "org_category": { 
        "terms": { 
         "field": "givingMatch.org_category", 
         "size": 1000 
        }, 
        "aggs": { 
         "total": { 
         "sum":{ 
          "field": "givingMatch.low_gift" 
         } 
         } 
        } 
       } 
       } 
       } 

      } 
     } 
    }, 
    "size": 0 
} 

...."aggregations": { 
    "categories": { 
     "doc_count": 93084, 
     "inner": { 
     "doc_count": 65492, 
     "org_category": { 
      "doc_count_error_upper_bound": 0, 
      "sum_other_doc_count": 0, 
      "buckets": [ 
      { 
       "key": "DEM", 
       "doc_count": 28829, 
       "total": { 
       "value": 29859163 
       } 
      }, 
      { 
       "key": "REP", 
       "doc_count": 21561, 
       "total": { 
       "value": 69962305 
       } 
      },... 

答えて

0

がうまくいけば、これは他の誰かに数時間の節約になります

ここだけの追加のフィルタが追加必要とする現在のコードです。複数のフィルタを追加するには、集計セクションは次のようになります。

"aggs": { 
     "categories": { 
      "nested": { 
       "path": "givingMatch" 
      }, 
      "aggs": { 
       "inner": { 
       "filter": { 
        "bool": { 
        "must": [{ 
        "terms": { 
        "givingMatch.db_type":["FECmatch","StateMatch"] 
        } 
       }, 
       { 
            "range": { 
             "givingMatch.QualityScore": { 
              "from": 17 
             } 
            } 
           }, 
           { 
            "range": { 
             "givingMatch.Status": { 
              "from": 0, 
              "to": 8 
             } 
            } 
           } 

       ] 
       } 
       }, 
       "aggs":{ 
        "org_category": { 
        "terms": { 
         "field": "givingMatch.org_category", 
         "size": 1000 
        }, 
        "aggs": { 
         "total": { 
         "sum":{ 
          "field": "givingMatch.low_gift" 
         } 
         } 
        } 
       } 
       } 
       } 

      } 
     } 
    } 

これにより、ネストされたagg内に複数のフィルタが作成されます。

関連する問題