在Elasticsearch中按优先级实施搜索

时间:2016-02-27 03:00:35

标签: elasticsearch

让我们想象一下,我们拥有琐碎的结构酒店和用户。

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

我有其他信息,介绍特定用户如何喜欢特定酒店。可能会出现如下:

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

我们同意酒店数量超过1M。

搜索我们需要每次运行获得按照等级asc或desc 排序的前10家酒店。 您会为此推荐哪种Elasticsearch架构(索引,映射,查询)?

P.S。我知道这对于SQL来说是微不足道的,但我仍然坚持使用ES实现。

1 个答案:

答案 0 :(得分:0)

您可以使用preferences索引中的此查询:

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

如果您希望hotel_namehotel_name索引中添加preferences字段,那么您就可以了。