最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1. Elasticsearch的查詢方式

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

2. 常用的ES查詢方式

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

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

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

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

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

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

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

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

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

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

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

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定義了主分片數(shù)為1。
number_of_replicas定義了副本數(shù)為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參數(shù)設置了相似度為2。 返回與"laptop"相似的文檔。

3.10 Nested Query(嵌套查詢)

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

使用nested查詢進行嵌套查詢。 在reviews嵌套字段中根據(jù)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)計結果,包括平均價格、最高價格和每個分類的文檔數(shù)量。

附:時間范圍查詢

簡單示例

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

總結 

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

相關文章

  • Spring?Boot超大文件上傳實現(xiàn)秒傳功能

    Spring?Boot超大文件上傳實現(xiàn)秒傳功能

    這篇文章主要介紹了Spring?Boot超大文件上傳實現(xiàn)秒傳功能,在實現(xiàn)分片上傳的過程,需要前端和后端配合,比如前后端的上傳塊號的文件大小,前后端必須得要一致,否則上傳就會有問題,需要的朋友可以參考下
    2022-12-12
  • java 頁面url傳值中文亂碼的解決方法

    java 頁面url傳值中文亂碼的解決方法

    本節(jié)講的是ajax 的URL參數(shù)中有中文值,傳到服務端,在用request.getParameter()方法,得到的常常會是亂碼。
    2013-03-03
  • idea中的update?project按鈕使用

    idea中的update?project按鈕使用

    這篇文章主要介紹了idea中的update?project按鈕使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • @Scheduled定時器使用注意事項及說明

    @Scheduled定時器使用注意事項及說明

    這篇文章主要介紹了@Scheduled定時器使用注意事項及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 詳解Java中Stream流的用法和原理

    詳解Java中Stream流的用法和原理

    最近編碼的時候用到了Stream這個東西,以前也用過,但是對它沒有一個系統(tǒng)的認知,在好奇心的驅動下還是決定花一些時間去系統(tǒng)地學一學,不了解Stream的同學可以看看本文,對大家的學習和工作有一定的幫助
    2023-10-10
  • java對接webservice接口的4種方式總結

    java對接webservice接口的4種方式總結

    因工作需要和一個Sap相關系統(tǒng)以WebService的方式進行接口聯(lián)調,之前僅聽過這種技術,但并沒有實操過,所以將本次開發(fā)進行記錄,這篇文章主要給大家介紹了關于java對接webservice接口的4種方式,需要的朋友可以參考下
    2023-10-10
  • Spring Boot多模塊化后,服務間調用的坑及解決

    Spring Boot多模塊化后,服務間調用的坑及解決

    這篇文章主要介紹了Spring Boot多模塊化后,服務間調用的坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java實現(xiàn)簡單的遞歸操作方法實例

    Java實現(xiàn)簡單的遞歸操作方法實例

    這篇文章主要給大家介紹了關于Java實現(xiàn)簡單的遞歸操作的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Mybatis批量操作sql寫法示例(批量新增、更新)

    Mybatis批量操作sql寫法示例(批量新增、更新)

    Mybatis技術,現(xiàn)在是工作中使用頻率越來越高,我們在對數(shù)據(jù)庫進行操作的時候,經(jīng)常會遇到批量操作的需求,這篇文章主要給大家介紹了關于Mybatis批量操作sql寫法的相關資料,需要的朋友可以參考下
    2021-05-05
  • Java面試題沖刺第二十五天--并發(fā)編程3

    Java面試題沖刺第二十五天--并發(fā)編程3

    這篇文章主要為大家分享了最有價值的三道關于并發(fā)編程的面試題,涵蓋內容全面,包括數(shù)據(jù)結構和算法相關的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論

福清市| 翼城县| 东兰县| 元朗区| 湖南省| 行唐县| 格尔木市| 娄烦县| 壤塘县| 英山县| 临沧市| 刚察县| 青冈县| 平昌县| 八宿县| 沙洋县| 汾西县| 凤台县| 裕民县| 德化县| 乐至县| 长岭县| 亚东县| 绥阳县| 静乐县| 桓仁| 呼伦贝尔市| 安丘市| 常宁市| 潮安县| 福清市| 吴江市| 太仓市| 田东县| 大足县| 阳泉市| 健康| 合作市| 大城县| 从化市| 绿春县|