2017-11-10 6 views
0

must_notとfilterの違いはelasticsearchにあるのですか?elasticsearchのmust_notとfilterの相違

など。ここでは(elasticsearch definitive guideから)、範囲にmust_notも使用されていないのですか?

{ 
    "bool": { 
     "must":  { "match": { "title": "how to make millions" }}, 
     "must_not": { "match": { "tag": "spam" }}, 
     "should": [ 
      { "match": { "tag": "starred" }} 
     ], 
     "filter": { 
      "range": { "date": { "gte": "2014-01-01" }} 
     } 
    } 
} 

は、具体的に this documentationを見て、彼らがまったく同じであることを私に表示されます。

フィルタ:節(クエリー)のドキュメントをマッチングして表示される必要があります。ただし、クエリのスコアを無視する必要はありません。フィルタ句はフィルタコンテキストで実行されます。つまり、スコアリングは無視され、句はキャッシュ用に考慮されます。

must_not:句(クエリ)は、一致するドキュメントには使用できません。句はフィルタコンテキストで実行され、スコアリングは無視され、句はキャッシュに考慮されます。得点は無視されるため、すべての文書のスコアが0になります。

+0

基本的には、スコアリングは不要ですが、must_not =!must(または!filter) – Val

+0

私はそれも考えましたが、2番目の文書では、filterとmust_notの両方がスコアなしでフィルタコンテキストで実行されます。 – schneida

+0

ドキュメントは検索から除外され、スコアリングすることができないので、must_notにスコアリングを使用するのは意味がありません – Val

答えて

1

基本的には、filter = mustであるが、スコアリングなし。

must_notは、文書が選択されるために条件が満たされなければならないが、filter(およびmust)は満たされてはならない条件を表現する。

関連する問題