2016-10-05 23 views
0

elasticsearchに次のSQLクエリを抽出します。日付範囲データとmust_not boolクエリによるElasticsearchフィルタリング

Select * 
from someTable 
Where @timestamp < some_date and @timestamp >= some_other_date 
and dst != '-' 

次に、返されたドキュメントにいくつかの集計を行います。私が集計した部分はわかりました。完全に動作します。しかし、文書を適切にフィルタリングすることはできません。私は次のクエリを試しましたが、dst = ' - 'のdocを取得しています。これらは集計で順番に計算されています。

クエリ

"query": {        
    "bool": { 
     "must_not": { 
      "term": { 
       "dst": '-' 
      } 
     }, 
     "filter":{ 
      "range":{ 
       "@timestamp":{ 
        "gte":"a date", 
        "lt": "another date" 
       } 
      } 
     } 
    } 
}  

は、私が何か間違ったことをしています。私は集計を使用しているので、サイズを0に設定します(ここには示されていません)。 Elasticsearch ver2.4とPython elasticsearchライブラリ。 「

+0

dstフィールドのマッピングは何ですか? – Val

+0

はpython elasticsearchクライアント経由でクエリを送信します集約クエリ.dstフィールドはanalzyed。それは間違いでしょうか?クエリのロジックは正しいですか? – Apostolos

答えて

1

それはアナライザが削除され、このフィールドは、分析すべきではない - - 私は、集計結果は」dstがあることを文書からの値が含まれているので、それが動作していないことを知っている

。インデックス内のフィールドからchar型

の場合他の理由でこのフィールドを解析して複数フィールドを使用する必要があります https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html

+0

これは問題だと感じましたか?クエリは正しいですか?それは私のポストに書かれたSQLクエリに対応していますか? – Apostolos

+1

not_analyzedを使用してインデックスマッピングを修正するとうまくいくはずです。 –

関連する問題