欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Elasticsearch(ES)多種查詢方式案例

 更新時間:2023年09月19日 10:21:02   作者:sunnyday0426  
Elasticsearch是一個分布式的RESTful搜索和分析引擎,可讓您輕松地大規(guī)模存儲,搜索和分析,這篇文章主要給大家介紹了關于Elasticsearch(ES)多種查詢方式的相關資料,需要的朋友可以參考下

1. Elasticsearch的查詢方式

Elasticsearch(ES)提供了多種查詢方式,可以根據不同的需求和場景選擇合適的查詢類型。

2. 常用的ES查詢方式

  • Match Query(匹配查詢): 根據字段中的內容進行全文匹配查詢,可以使用match、multi_match等。

  • Term Query(精確查詢): 根據字段中的精確值進行查詢,適用于keyword類型或者已經執(zhí)行過分詞器的字段。

  • Range Query(范圍查詢): 根據字段中的范圍值進行查詢,可以用來查詢數字或日期范圍,例如大于、小于、范圍內等。

  • Bool Query(布爾查詢): 通過邏輯運算符(must、must_not、should)組合多個查詢條件,實現(xiàn)更復雜的查詢邏輯。

  • Match Phrase Query(短語匹配查詢): 根據字段中連續(xù)的短語進行查詢,適用于需要保持短語順序的查詢。

  • Prefix Query(前綴查詢): 根據字段中的前綴進行查詢,適用于需要按照前綴匹配查詢的場景。

  • Wildcard Query(通配符查詢): 根據通配符模式進行查詢,支持通配符符號(*?)進行模糊匹配。

  • Fuzzy Query(模糊查詢): 根據字段中的模糊匹配進行查詢,可以通過設置fuzziness參數來控制模糊程度。

  • Nested Query(嵌套查詢): 根據嵌套對象進行查詢,以便查詢嵌套在文檔中的相關信息。

  • Aggregation Query(聚合查詢): 用于計算、統(tǒng)計和分析數據,包括求和、平均值、最小值、最大值、分組等操作。

以上只是一些常見的查詢方式,ES還提供了更多的查詢類型和功能,如復雜查詢、地理位置查詢、正則表達式查詢等,可根據實際需求選擇合適的查詢方式。

3. 查詢案例

下面是一個包含各種查詢案例的示例:

3.1 products的索引

product_name:產品名稱,類型為text

category:產品類別,類型為keyword

price:產品價格,類型為float

description:產品描述,類型為text

tags:產品標簽,類型為keyword

創(chuàng)建索引products:

PUT /products
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "product_name": {
        "type": "text"
      },
      "category": {
        "type": "keyword"
      },
      "price": {
        "type": "float"
      },
      "description": {
        "type": "text"
      },
      "tags": {
        "type": "keyword"
      }
    }
  }
}

創(chuàng)建了一個名為products的索引。 number_of_shards定義了主分片數為1。
number_of_replicas定義了副本數為1。 mappings定義了索引中的字段類型和屬性。

3.2 Match Query(匹配查詢)

POST /products/_search
{
  "query": {
    "match": {
      "product_name": "laptop"
    }
  }
}

使用match查詢來進行全文匹配查詢。 在product_name字段中匹配關鍵詞"laptop"。
返回與"laptop"相關度最高的文檔。

3.3 Term Query(精確查詢)

POST /products/_search
{
  "query": {
    "term": {
      "category": "electronics"
    }
  }
}

使用term查詢進行精確匹配查詢。 在category字段中精確匹配"electronics"。
返回與"electronics"完全一致的文檔。

3.4 Range Query(范圍查詢)

POST /products/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 100,
        "lte": 500
      }
    }
  }
}

使用range查詢進行范圍查詢。 在price字段中查詢價格在100到500之間的文檔。 返回價格在100到500之間的文檔。

3.5 Bool Query(布爾查詢)

POST /products/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "product_name": "laptop" } },
        { "term": { "category": "electronics" } }
      ],
      "must_not": [
        { "range": { "price": { "gte": 2000 } } }
      ],
      "should": [
        { "match": { "description": "lightweight" } },
        { "match": { "tags": "portable" } }
      ]
    }
  }
}

使用bool查詢進行多條件查詢邏輯。
must子句中同時滿足product_name為"laptop"和category為"electronics"的文檔。
must_not子句中排除價格大于等于2000的文檔。
should子句中滿足description包含"lightweight"或tags包含"portable"的文檔。
返回符合以上條件的文檔。

3.6 Match Phrase Query(短語匹配查詢)

POST /products/_search
{
  "query": {
    "match_phrase": {
      "product_name": "red laptop"
    }
  }
}

使用match_phrase查詢進行短語匹配查詢。 在product_name字段中匹配短語"red laptop"。 返回包含短語"red
laptop"的文檔。

3.7 Prefix Query(前綴查詢)

POST /products/_search
{
  "query": {
    "prefix": {
      "product_name": "ca"
    }
  }
}

使用prefix查詢進行前綴匹配查詢。 在product_name字段中匹配以"ca"開頭的文檔。 返回以"ca"開頭的產品名稱的文檔。

3.8 Wildcard Query(通配符查詢)

POST /products/_search
{
  "query": {
    "wildcard": {
      "product_name": "l*t"
    }
  }
}

使用wildcard查詢進行通配符模式匹配查詢。 在product_name字段中匹配帶有"l"和"t"之間任意字符的文檔。
返回符合通配符模式的文檔。

3.9 Fuzzy Query(模糊查詢)

POST /products/_search
{
  "query": {
    "fuzzy": {
      "product_name": {
        "value": "laptop",
        "fuzziness": 2
      }
    }
  }
}

使用fuzzy查詢進行模糊匹配查詢。 在product_name字段中匹配與"laptop"相似的文檔。
fuzziness參數設置了相似度為2。 返回與"laptop"相似的文檔。

3.10 Nested Query(嵌套查詢)

POST /products/_search
{
  "query": {
    "nested": {
      "path": "reviews",
      "query": {
        "match": {
          "reviews.comment": "good"
        }
      }
    }
  }
}

使用nested查詢進行嵌套查詢。 在reviews嵌套字段中根據reviews.comment字段的值查詢"good"的文檔。
返回包含滿足嵌套查詢條件的文檔。

3.11 Aggregation Query(聚合查詢)

POST /products/_search
{
  "size": 0,
  "aggregations": {
    "avg_price": {
      "avg": {
        "field": "price"
      }
    },
    "max_price": {
      "max": {
        "field": "price"
      }
    },
    "category_count": {
      "terms": {
        "field": "category"
      }
    }
  }
}

使用aggregations進行聚合查詢。 avg聚合計算了price字段的平均值。 max聚合計算了price字段的最大值。
terms聚合按category字段進行分組統(tǒng)計。 返回計算和統(tǒng)計結果,包括平均價格、最高價格和每個分類的文檔數量。

附:時間范圍查詢

簡單示例

GET /_search
{
  "query": {
    "range": {
      "timestamp": {
        "gte": "now-1d/d", // 當前時間的上一天, 四舍五入到最近的一天
        "lte": "now/d" // 當前時間, 四舍五入到最近的一天
      }
    }
  }
}

總結 

到此這篇關于Elasticsearch(ES)多種查詢方式的文章就介紹到這了,更多相關ES多種查詢方式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決SpringBoot返回結果如果為null或空值不顯示處理問題

    解決SpringBoot返回結果如果為null或空值不顯示處理問題

    這篇文章主要介紹了解決SpringBoot返回結果如果為null或空值不顯示處理問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 用遞歸查找有序二維數組的方法詳解

    用遞歸查找有序二維數組的方法詳解

    本篇文章是對用遞歸查找有序二維數組的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • SpringBoot配置類編寫過程圖解

    SpringBoot配置類編寫過程圖解

    這篇文章主要介紹了SpringBoot配置類編寫過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • java基本教程之線程休眠 java多線程教程

    java基本教程之線程休眠 java多線程教程

    本文對javaThread中sleep()方法進行介紹,sleep() 的作用是讓當前線程休眠,即當前線程會從“運行狀態(tài)”進入到“休眠(阻塞)狀態(tài)”,大家參考使用吧
    2014-01-01
  • java URL亂碼的解決辦法

    java URL亂碼的解決辦法

    這篇文章介紹了java URL亂碼的解決辦法,有需要的朋友可以參考一下
    2013-09-09
  • 解讀String字符串拼接的原理

    解讀String字符串拼接的原理

    這篇文章主要介紹了關于String字符串拼接的原理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • MyBatis-Plus不使用數據庫默認值的問題及解決

    MyBatis-Plus不使用數據庫默認值的問題及解決

    這篇文章主要介紹了MyBatis-Plus不使用數據庫默認值的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Hibernate迫切連接和普通連接的區(qū)別實例詳解

    Hibernate迫切連接和普通連接的區(qū)別實例詳解

    這篇文章主要介紹了Hibernate迫切連接和普通連接的區(qū)別實例詳解,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 詳解Spring工廠特性

    詳解Spring工廠特性

    今天帶大家學習Spring的特性-工廠特性,文中有非常詳細的介紹及代碼示例,對正在學習java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Java synchronized關鍵字和Lock接口實現(xiàn)原理

    Java synchronized關鍵字和Lock接口實現(xiàn)原理

    這篇文章主要介紹了Java synchronized關鍵字和Lock接口實現(xiàn)原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12

最新評論