2017-01-04 3 views
1

を除外するために、私はこのようなクエリを持っている:Elasticsearchどのようにスコア= 0のドキュメント

{ 
    "size": 4, 
    "query": { 
     "bool": { 
      "should": [{ 
       "terms": { "property": ["iPhone earbuds", "iPhone 6 case"] } 
      }, { 
       "constant_score": { 
        "filter": { "match_all": {} }, 
        "boost": 0 
       } 
      }], 
      "must_not": { 
       "ids": { 
        "values": ["doc 1", "doc 2"], 
        "boost": 0 
       } 
      }, 
      "minimum_should_match": 1 
     } 
    }, 
    "sort": [] 
} 

空のオブジェクトのいくつかは、私は、クエリのJSONを構築し、それらのすべてが、ほとんどの場合に意味を持つかのほんの成果物ですこれは私が見つけた単なる例です。

なぜスコアが0で返されるのですか?これをやめないようにするにはどうすればよいですか?

{ 
    "constant_score": { 
     "filter": { "match_all": {} }, 
     "boost": 0 
    } 
} 

マッチのすべてと、この部分のためにもそれを0のスコアを与えるだろう

答えて

0

。これもあなたの"minimum_should_match": 1ルールを満たしています。

あなたは、さらにあなたの例を減らすことができる(と私はまだこのクエリでは達成したいのかわからない):

PUT /test/test/1 
{ 
    "foo": "iphone" 
} 
PUT /test/test/2 
{ 
    "foo": "iphone earbuds" 
} 
PUT /test/test/3 
{ 
    "foo": "iphone case" 
} 
PUT /test/test/4 
{ 
    "foo": "bar" 
} 

POST /test/_search 
{ 
    "query": { 
     "bool": { 
      "should": [ 
       { 
        "terms": { "foo": ["iphone"] } 
       }, { 
        "constant_score": { 
         "filter": { "match_all": {} }, 
         "boost": 0 
        } 
       } 
      ], 
      "minimum_should_match": 1 
     } 
    } 
} 

DELETE /test 
+0

は実際に、それはあなたが書いたようですが、私だけインデント間違っている(編集済み)。すべてが一致するので、フィールドで並べ替えることができますが、この場合は並べ替えフィールドはありません。これは、いくつかのケースでは、どの用語にも一致しないドキュメントの順序を制御できるようにするためです。だから、あなたは '' minimum_should_match ":1'が' match_all'にスコア0のアイテムを返させていると言っていますか? – pferrel

+0

'match_all'はどのドキュメントにもマッチし、' 'boost '':0'はその要素のスコアが0であることを確認します。' 'minimum_should_match":1'で少なくとも 'この検索を呼び出しているエンドポイント上のドキュメントの場合は、 'match_all'を使用して満足してください。 0のスコアがあなたを混乱させる場合は、「ブースト」を試してください:0.1' – xeraa

+0

実際にはスコア= 0の結果を削除しています。私は質問をする方法を尋ねています**は、スコア0のドキュメントを返さないので、 'should'の' terms'と一致しないアイテムを返しません。これを引き起こしているのが 'match_all'か' minimum_should_match'なのか分かりません。 'constant_score'と' minimum_should_match'を完全に削除しますか?空の 'sort'は問題ですか?このクエリを作成するロジックは複雑なので、0の結果の理由を理解しようとしています。 – pferrel

関連する問題