2014-09-12 119 views
0

目前我需要實現一個連接採用彈性的搜索,而這裏的情景:加入彈性搜索

比方說,在彈性搜索每個條目有三個字段:ID,姓名和愛好。並給出兩個名字(例如'約翰'和'瑪麗'),基本上我想讓所有有共同愛好的約翰和瑪麗(它可能不同)。

以下是可能的結果:

[{id: 1, name: 'john', hobby: 'singing'}, 
{id: 2, name: 'mary', hobby: 'singing'}, 
{id: 3, name: 'mary', hobby: 'singing'}, 
{id: 4, name: 'john', hobby: 'cycling'}, 
{id: 5, name: 'john', hobby: 'cycling'}, 
{id: 6, name: 'mary', hobby: 'cycling'} 
] 

我知道我可以做多個查詢,做本地加盟,但我想知道如果彈性搜索可以在內部處理這種情況。

我正在設計一個從零開始支持這個功能的映射,所以任何建議都會被讚賞!

在此先感謝!

回答

1

如果無法將搜索詞組合成單個查詢,則可以使用dis_max函數創建子查詢聯合。

{ 
    "dis_max" : { 
     "tie_breaker" : 0.7, 
     "boost" : 1.2, 
     "queries" : [ 
      { 
       "term" : { "name" : "john" } 
      }, 
      { 
       "term" : { "name" : "mary" } 
      } 
     ] 
    } 
}