首頁 > 軟體

10個Elasticsearch查詢的實用技巧分享

2023-08-28 18:05:54

前言

Elasticsearch是一個非常流行的搜尋引擎,已經成為了許多企業的首選解決方案。然而,我們要想成為一個優秀的程式設計師,就必須掌握各種查詢技巧。本文將向大家介紹10個實用的Elasticsearch查詢技巧,並配上對應的程式碼範例,幫助我們更好地掌握Elasticsearch的查詢語法。

範例

1. 匹配多個詞語

使用 bool 查詢和 must 子句可以匹配多個詞語。例如,匹配同時包含“apple”和“banana”的檔案:

{
  "query": {
    "bool": {
      "must": [
        { "match": { "text": "apple" }},
        { "match": { "text": "banana" }}
      ]
    }
  }
}

2. 匹配某個欄位中的任意一個詞

使用 terms 查詢和欄位名可以匹配某個欄位中的任意一個詞。例如,匹配 title 欄位中包含“apple”或“banana”的檔案:

{
  "query": {
    "terms": {
      "title": ["apple", "banana"]
    }
  }
}

3. 匹配某個欄位中的詞語字首

使用 prefix 查詢和欄位名可以匹配某個欄位中的詞語字首。例如,匹配 title 欄位中以“app”開頭的檔案:

{
  "query": {
    "prefix": {
      "title": "app"
    }
  }
}

4. 匹配某個欄位中的詞語萬用字元

使用 wildcard 查詢和欄位名可以匹配某個欄位中的詞語萬用字元。例如,匹配 title 欄位中包含“app”或“ban”的檔案:

{
  "query": {
    "wildcard": {
      "title": "*app* OR ban*"
    }
  }
}

5. 匹配某個欄位中的詞語模糊匹配

使用 fuzzy 查詢和欄位名可以進行詞語模糊匹配。例如,匹配 title 欄位中類似於“aple”的檔案:

{
  "query": {
    "fuzzy": {
      "title": "aple"
    }
  }
}

6. 匹配某個欄位中的詞語範圍

使用 range 查詢和欄位名可以匹配某個欄位中的詞語範圍。例如,匹配 price 欄位在 10 到 100 之間的檔案:

{
  "query": {
    "range": {
      "price": {
        "gte": 10,
        "lte": 100
      }
    }
  }
}

7. 匹配某個欄位中的詞語存在與否

使用 exists 查詢和欄位名可以匹配某個欄位中的詞語是否存在。例如,匹配包含 description 欄位的檔案:

{
  "query": {
    "exists": {
      "field": "description"
    }
  }
}

8. 按照某個欄位排序

使用 sort 引數可以按照某個欄位進行排序。例如,按照 score 欄位從高到低排序:

{
  "query": {
    "match_all": {}
  },
  "sort": [
    { "score": "desc" }
  ]
}

9. 返回某些欄位的部分資料

使用_source 引數可以返回某些欄位的部分資料。例如,只返回 title 和 price 欄位的資料:

{
  "query": {
    "match_all": {}
  },
  "_source": ["title", "price"]
}

10. 進行分頁操作

使用 from 和 size 引數可以進行分頁操作。例如,返回第 11-20 條資料:

{
  "query": {
    "match_all": {}
  },
  "from": 10,
  "size": 10
}

到此這篇關於10個Elasticsearch查詢的實用技巧分享的文章就介紹到這了,更多相關Elasticsearch查詢內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com