2016-02-29 32 views
1

我正在嘗試按照文檔(可能是過去的當前日期)中所述執行以下操作。Elasticsearch 2.x與multi_match查詢中不同類型的相同字段的不同提升

https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping.html

我會適應那裏說明什麼,我想實現的方案。

假設我們有我們的索引兩種類型:blog_t1的博客文章 的話題1,和blog_t2有關主題2.這兩種類型 有一個標題字段的博客文章。

然後,我只想將查詢提升應用於blog_t1 的標題字段。

在以前的Elasticsearch版本中,您可以使用blog_t1.title和blog_t2.title從該類型中引用 字段。所以助推 其中之一就像blog_t1.title^2一樣簡單。

但自從Elasticsearch 2.x以來,對類型的一些舊的支持已被刪除(出於很好的理由,如消除歧義)。這些變化在這裏描述。

https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking_20_mapping_changes.html

所以我的問題是,我怎麼能做到這一點提升爲標題,只是類型blog_t1,而不是blog_t2,與Elasticsearch 2.X,在multi_match查詢?

該查詢會是這樣的,但這顯然不起作用type.field已不再是一件事了。

GET /my_index/_search 
{ 
    "query": { 
    "multi_match": { 
     "query": "Hello World", 
     "fields": [ 
     "blog_t1.title^2", 
     "blog_*.title", 
     "author", 
     "content" 
     ] 
    } 
    } 
} 

僅供參考,我迄今發現的唯一的解決辦法就是給標題不同的名稱,如title_boosted爲blog_t1,只是標題爲別人,利用的信息時,這是有問題的,因爲我再也不能使用「標題」作爲獨特的事情。

謝謝。

回答

0

怎麼樣增加一個「可選」約束的文件類型,以便文檔匹配它有更多的得分(你可以用提高調整它),如:

{ 
    "query" : { 
    "bool" : 
    { 
     "must" : 
     [ 
     {"match" : {"title" : "Hello world"}} 
     ], 
     "should" : 
     [ 
     {"match" : {"_type" : "blog_t1"}} 
     ] 
    } 
    } 
} 

或用得分函數:

{ 
    "query": { 
    "function_score": { 
     "query": { 
     "match": { 
      "title": "Hello world" 
     } 
     }, 
     "boost_mode": "multiply", 
     "functions": [ 
     { 
      "filter": { 
      "term": { 
       "_type": "blog_t1" 
      } 
      }, 
      "weight": 2 
     }, 
     { 
      "filter": { 
      "term": { 
       "_type": "blog_t2" 
      } 
      }, 
      "weight": 3 
     } 
     ] 
    } 
    } 
} 
+0

感謝您的回答,我明白您的意思。這確實是一個有趣的建議。但事情是,我想控制具有特定價值的推動。例如,如果我添加需要特定增強功能的第三個字段,則您的解決方案將無法工作,例如, blog_t1.title^3,blog_t2.title^2,blog_t3.title^1.5,blog_t * .title。 –

+0

絕對同意,也許你可以將它與[score]功能相結合(https://www.elastic.co/guide/en/elasticsearch/guide/current/function-score-filters.html)乘以score_mode? – macebalp

+0

關於分數函數也檢查[this](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html)。 – macebalp

相關問題