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

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

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

1. Elasticsearch的查詢方式

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

2. 常用的ES查詢方式

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

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

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

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

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

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

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

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

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

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

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

3. 查詢案例

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

3.1 products的索引

product_name:產(chǎn)品名稱,類型為text

category:產(chǎn)品類別,類型為keyword

price:產(chǎn)品價(jià)格,類型為float

description:產(chǎn)品描述,類型為text

tags:產(chǎn)品標(biāo)簽,類型為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)建了一個(gè)名為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查詢來(lái)進(jìn)行全文匹配查詢。 在product_name字段中匹配關(guān)鍵詞"laptop"。
返回與"laptop"相關(guān)度最高的文檔。

3.3 Term Query(精確查詢)

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

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

3.4 Range Query(范圍查詢)

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

使用range查詢進(jìn)行范圍查詢。 在price字段中查詢價(jià)格在100到500之間的文檔。 返回價(jià)格在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查詢進(jìn)行多條件查詢邏輯。
must子句中同時(shí)滿足product_name為"laptop"和category為"electronics"的文檔。
must_not子句中排除價(jià)格大于等于2000的文檔。
should子句中滿足description包含"lightweight"或tags包含"portable"的文檔。
返回符合以上條件的文檔。

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

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

使用match_phrase查詢進(jìn)行短語(yǔ)匹配查詢。 在product_name字段中匹配短語(yǔ)"red laptop"。 返回包含短語(yǔ)"red
laptop"的文檔。

3.7 Prefix Query(前綴查詢)

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

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

3.8 Wildcard Query(通配符查詢)

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

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

3.9 Fuzzy Query(模糊查詢)

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

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

3.10 Nested Query(嵌套查詢)

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

使用nested查詢進(jìn)行嵌套查詢。 在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進(jìn)行聚合查詢。 avg聚合計(jì)算了price字段的平均值。 max聚合計(jì)算了price字段的最大值。
terms聚合按category字段進(jìn)行分組統(tǒng)計(jì)。 返回計(jì)算和統(tǒng)計(jì)結(jié)果,包括平均價(jià)格、最高價(jià)格和每個(gè)分類的文檔數(shù)量。

附:時(shí)間范圍查詢

簡(jiǎn)單示例

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

總結(jié) 

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

相關(guān)文章

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

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

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

    java 頁(yè)面url傳值中文亂碼的解決方法

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

    idea中的update?project按鈕使用

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

    @Scheduled定時(shí)器使用注意事項(xiàng)及說(shuō)明

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

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

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

    java對(duì)接webservice接口的4種方式總結(jié)

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

    Spring Boot多模塊化后,服務(wù)間調(diào)用的坑及解決

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

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

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

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

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

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

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

最新評(píng)論

璧山县| 常州市| 黄浦区| 峨眉山市| 礼泉县| 涪陵区| 张北县| 濮阳县| 正安县| 札达县| 祁连县| 峨山| 婺源县| 织金县| 孟津县| 桂东县| 会理县| 六枝特区| 峨边| 新巴尔虎右旗| 兴国县| 本溪市| 合山市| 阿瓦提县| 和静县| 香格里拉县| 遂昌县| 康乐县| 新宁县| 崇仁县| 泊头市| 资阳市| 尼勒克县| 东台市| 河间市| 海阳市| 东兴市| 三门县| 桐乡市| 马尔康县| 新平|