2017-01-23 46 views
1

有沒有什麼辦法可以根據類型在同一字段上搜索結果?boostelasticsearch中的相同字段的相關性

我的基本推動是一樣的東西:

GET _search 
{ 
    "query": { 
     "simple_query_string": { 
     "query": "mangan", 
     "fields":["_all", "title^6"] 
     } 
    } 
} 

但我希望冠軍是不太重要的其他一些文件,所以我試着用類型前綴是:

GET _search 
{ 
    "query": { 
     "simple_query_string": { 
     "query": "mangan", 
     "fields":[ 
      "_all", 
      "DocumentationPage.title^6", 
      "DocumentationPage.title^6"] 
     } 
    } 
} 

但隨後根本沒有提升。作爲最後的手段我可以使用Funcsion/Script Score bu想避免它。

爲了舉例,假定文檔只包含title字段。

回答

1

實現此目的的一種簡單方法是將OP中的查詢重新編寫爲dis-max query

舉例elasticsearch 5.x的:

{ 
    "query": { 
     "dis_max": { 
     "queries": [ 
      { 
       "simple_query_string": { 
        "fields": [ 
        "_all" 
        ], 
        "query": "mangan" 
       } 
      }, 
      { 
       "bool": { 
        "filter": { 
        "type": { 
         "value": "DocumentationPage" 
        } 
        }, 
        "must": [ 
        { 
         "simple_query_string": { 
          "fields": [ 
           "title^6" 
          ], 
          "query": "mangan" 
         } 
        } 
        ] 
       } 
      } 
     ] 
     } 
    } 
} 
+0

謝謝你,工作正常!似乎這種技術在按不同條件過濾不同類型的文檔時可能也很有幫助。 – PeterM

相關問題