2016-12-11 4 views
0

存在フィルタがES5.0の既存のクエリに置き換えられました。ES5.0に存在するフィルタを実現する方法は?

私たちはどのようにして、同じクエリ内で同等のものを達成できますか?言い換えれば、2つのクエリを実行するのではなく、存在カウントを含むさまざまな集計を行うだけです。

だから私は、フィールド「the_field」が存在する(またはnullでない)時間数をカウントしたい

"aggregation":{ 
    "exists_count":{ 
     "filter":{ 
     "exists":{ 
      "field":"the_field" 
     } 
     } 
    } 
} 

答えて

0

私はあなたが統計の集約を使用することができると思う、elastic stats doc

{ "aggs" : 
     { "time_stats" :    
      { "extended_stats" : 
      { "field" : "time" } 
      } 
     } 
} 

ルック

0

Elastic 5.0のフィルタは、それほど多くのクエリで置き換えられることはありませんでした。構文的には同じように見えますが、使用するコンテキストによってクエリとして解釈されるかどうか(スコアリングの要因)、または単にドキュメントを除外するためのフィルタとして判断されます。以下のコードは正確に何をしたい達成する必要があります

{ 
    "query": { 
    "match_all": {} 
    }, 
    "aggs": { 
    "field_exists": { 
     "filter": { 
     "exists": { 
      "field": "name" 
     } 
     } 
    } 
    } 
} 

を集約は、「名前のフィールドが存在するドキュメントの数を表すdoc_countと、このようになります返され、このことができます

{ 
    "aggregations": { 
    "field_exists": { 
     "doc_count": 11984 
    } 
    } 
} 
願っています。!
関連する問題