2016-02-27 103 views
0

讓我們想象我們有一個微不足道的結構的酒店和用戶。在Elasticsearch中優先執行搜索

Hotel   User 
-----   ---- 
Id    Id 
Name   Name 

我有其他信息介紹特定用戶如何喜歡特定酒店。其可以呈現爲:

Preferences 
----------- 
hotel_id 
user_id 
tier (int value, 0-9) 

我們同意酒店的數量超過1M。

搜索我們需要每次運行的是獲得前10家酒店排序按升序排名或降序。 你會爲此推薦哪種Elasticsearch模式(索引,映射,查詢)?

p.s.我知道這對於SQL來說是微不足道的,但我陷入了ES實現的困境。

+0

層是每個用戶。所以你想要一個特定的用戶? – Richa

+0

@Richa yes,爲特定用戶排序 – Rustem

回答

0

您可以使用此查詢從preferences指數:

{ 
"size": 10, 
"query": { 
    "bool": { 
     "must": [ 
      { 
       "term": { 
        "user_id": "USERID" 
       } 
      } 
     ] 
    } 
}, 
"sort": [ 
    { 
     "tier": { 
     "order": "desc" 
     } 
    } 
    ] 
} 

如果你想獲得hotel_name加入preferences指數hotel_name領域,你是好去。

+0

但是,謝謝,我可以在同一個請求中獲取酒店名稱嗎? – Rustem

+0

我認爲根據目前的「索引」結構是不可能的。但是,如果您將'hotel_name'存儲在'preferences'索引中,那麼您也將獲得'hotel_name'。 – Richa