1. 程式人生 > >elasticsearch聯表查詢2

elasticsearch聯表查詢2

原文:https://www.elastic.co/guide/cn/elasticsearch/guide/current/denormalization.html

非規範化你的資料編輯

使用 Elasticsearch 得到最好的搜尋效能的方法是有目的的通過在索引時進行非規範化 denormalizing。對每個文件保持一定數量的冗餘副本可以在需要訪問時避免進行關聯。

如果我們希望能夠通過某個使用者姓名找到他寫的部落格文章,可以在部落格文件中包含這個使用者的姓名:

PUT /my_index/user/1
{
  "name":     "John Smith",
  "email":    "
[email protected]
", "dob": "1970/10/24" } PUT /my_index/blogpost/2 { "title": "Relationships", "body": "It's complicated...", "user": { "id": 1, "name": "John Smith" } }

這部分使用者的欄位資料已被冗餘到 blogpost 文件中。

現在,我們通過單次查詢就能夠通過 relationships 找到使用者 John 的部落格文章。

GET /my_index/blogpost/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "title":     "relationships" }},
        { "match": { "user.name": "John"          }}
      ]
    }
  }
}

資料非規範化的優點是速度快。因為每個文件都包含了所需的所有資訊,當這些資訊需要在查詢進行匹配時,並不需要進行昂貴的聯接操作。