2017-08-03 3 views
0

Elasticsearchインスタンスを1.7から5.4.3にアップグレードし、同じクエリを使用している場合でも検索結果が2つのシステムで異なることに気付きました。1.7から5.4への移動時の弾性検索クエリの結果が異なります

Elasticsearch 1.7クエリ

{ 
    "query": { 
    "filtered": { 
     "query": { 
     "multi_match": { 
      "query": "something", 
      "fields": [ 
      "field1", 
      "field2", 
      "field3" 
      ], 
      "operator": "and" 
     } 
     } 
    } 
    } 
} 

Elasticsearch 5.4クエリ

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "multi_match": { 
      "query": "something", 
      "fields": [ 
       "field1", 
       "field2", 
       "field3" 
      ], 
      "operator": "and" 
      } 
     } 
     ] 
    } 
    } 
} 

Elasticsearch 1.7における第一の検索結果がElasticsearch 5.4での第71の結果になります。 _explainエンドポイントで1.7と5.4の間の同じ検索結果を見ると、得点が異なっていることがわかります。また、このクエリには、検索クエリが一致するシノニムが含まれます。

質問

  1. どれOB

    { 
        "_index": "...", 
        "_type": "...", 
        "_id": "...", 
        "matched": true, 
        "explanation": { 
         "value": 7.1987557, 
         "description": "sum of:", 
         "details": [ 
          { 
           "value": 7.1987557, 
           "description": "max of:", 
           "details": [ 
            { 
             "value": 6.659632, 
             "description": "weight(Synonym(field1:something field1:something2 field1:something3) in 113) [PerFieldSimilarity], result of:", 
             "details": [ 
    ...remainder removed for brevity 
    
    Elasticsearch 5.4のために説明

    { 
        "_index": "...", 
        "_type": "...", 
        "_id": "...", 
        "matched": true, 
        "explanation": { 
         "value": 9.963562, 
         "description": "max of:", 
         "details": [ 
          { 
           "value": 3.1413355, 
           "description": "sum of:", 
           "details": [ 
            { 
             "value": 1.0609967, 
             "description": "weight(field1:something in 13) [PerFieldSimilarity], result of:", 
             "details": [ 
    ...remainder removed for brevity 
    
    Elasticsearch 1.7のための説明両方のバージョンで同等のクエリで検索結果が大きく異なるのはなぜですか?
  2. 問題の一部を示し、計算のためのsum ofよりmax of高いElasticsearch 1.7ショーの_explainクエリこと、そしてそれがElasticsearch 5.4用反対であるという事実をしていますか?

答えて

0

デフォルトの "類似性" TF/IDFからBM25に、Elasticsearch 5.0で変更

は、技術的に、これは実際のLucene 6.2(Elasticsearch 5.0.0のデフォルト値)に移動する変化です。

BM25 #18948に変更し、デフォルトの類似性(発行:#18944

あなたはElasticsearch similarity hereについての詳細を読むことができます

Elasticsearch 5.0.0 Release Notes次の行が含まれます。これは、2つのフィールドが互いにどのように比較されるか(特に、「テキスト」マッピングを持つフィールド)です。 5.0.0より前では、デフォルト類似度はTF/IDF(用語頻度、文書頻度逆)でしたが、後でBM25(Best Match 25)に変更されました。この変更により、異なる検索結果が生成されます。これは、より良い検索結果のセットとなることを意図しています。あなたは以前の動作を使用したい場合は

あなたは(TF/IDFを参照)classicを使用するマッピングファイルで​​を変更することができます。例えば、あなたのYAMLマッピングファイルが持っている可能性があり:より多くの情報を

description: 
    type: text 
    similarity: classic 

便利なリンク:

関連する問題