2016-03-19 8 views
0

質問を実行する前にelasticsearch 2.2でドキュメントをフィルタする方法。私はこのページを参照しましたが、依然として正しいクエリをフレーム化できませんでした。elasticsearchでフィルタする2.2

https://www.elastic.co/guide/en/elasticsearch/reference/2.2/query-filter-context.html

{ 
"size" : 9999, 
"query" : { 
"bool" : {  
    "filter" : { 
    "bool" : { 
     "must" : [ { 
     "exists" : { 
      "field" : "dvd" 
     } 
     } ] 
    } 
    }, 
    "should" : [{ 

    "bool" : { 
     "must" : [ { 
     "match" : { 
      "rec" : { 
      "query" : "CKS", 
      "type" : "boolean" 
      } 
     } 
     }, { 
     "match" : { 
      "date" : { 
      "query" : "2016-03-09", 
      "type" : "boolean" 
      } 
     } 
     } ] 
    } 

    }] 
} 
    } 
} 

これは私が..私はそれぞれが有する2必要があります句で万一の句の多くを持っていませんしようとしているものです。 should節のいずれかが一致する必要があります。私はシンプルにするためにshould節を1つだけ含んでいます。クエリは完璧に動作しています。私はこの上にフィルタを適用したい。クエリを実行する前にドキュメントをフィルタリングします。しかし、これは動作していません。

私はElasticsearch 2.2を使用しています...このelasticsearchのバージョンでドキュメントをフィルタリングする方法を教えてください。

私はポストフィルタが異なる目的のためだと思います。

答えて

1

は、boolクエリのフィルタ部分を変更することを提案します。クエリの配列をフィルタ項目に渡すことができます。これは、よりなる:Jettroの質問の下にあなたのコメントについて { "filter" : [ { "exists": { "field" : "dvd" } } ] }

+0

OR条件で2つの存在フィルタを適用したい場合はどうすればよいですか?つまり、存在するフィルタのフィールドが1つでも存在する場合は、そのドキュメントをフィルタ処理します。両方のフィールドを持つ必要はありません。 – user2526641

0

あなたがそうのようなブールクエリのフィルタブロック内のブールクエリ/フィルタを使用することができますと今

{ 
    "query": { 
    "bool": { 
     "filter": { 
     "bool": { 
      "should": [ 
      { 
       "exists": { 
       "field": "dvd" 
       } 
      }, 
      { 
       "exists": { 
       "field": "album" 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 

文書DVDフィールドまたはアルバムフィールドのいずれかが返されます。

関連する問題