日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ElasticSearch常用搜索命令整理(长期更新...)

發(fā)布時(shí)間:2023/12/16 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ElasticSearch常用搜索命令整理(长期更新...) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  • 基礎(chǔ)入門版
    • 快速檢查集群的健康狀況
    • 快速查看集群中有哪些索引
    • 索引的CRUD操作以商品為例
      • 新增商品建立索引
      • 查詢商品參見查詢專題詳解
      • 修改商品name
      • 刪除商品
  • 查詢專題版
    • query string search不常用
    • query DSLDomain Specified Language特定領(lǐng)域的語言
    • query filter
    • full-text search全文檢索
    • phrase search短語搜索
    • highlight search高亮搜索結(jié)果
  • 批量操作
    • 批量查詢mget
    • 批量操作bulk

基礎(chǔ)入門版

快速檢查集群的健康狀況

GET /_cat/health?v

說明:如何快速了解集群的健康狀況?green、yellow、red?
green:每個(gè)索引的primary shard和replica shard都是active狀態(tài)的
yellow:每個(gè)索引的primary shard都是active狀態(tài)的,但是部分replica shard不是active狀態(tài),處于不可用的狀態(tài)
red:不是所有索引的primary shard都是active狀態(tài)的,部分索引有數(shù)據(jù)丟失了

快速查看集群中有哪些索引

GET /_cat/indices?v

索引的CRUD操作,以商品為例

新增商品(建立索引)

(1)手動(dòng)指定document id(用于其他庫倒進(jìn)來時(shí)本身就含有id的情況)

PUT /ecommerce/product/1 {"name" : "gaolujie yagao","desc" : "gaoxiao meibai","price" : 30,"producer" : "gaolujie producer","tags": [ "meibai", "fangzhu" ] }

說明:若已經(jīng)有/ecommerce/product/1該數(shù)據(jù),此時(shí)“新增”操作變成“全量替換”,舊數(shù)據(jù)被deleted。因此如果我們要需要?jiǎng)?chuàng)建,而不允許替換數(shù)據(jù)(邏輯:若已經(jīng)有該條數(shù)據(jù),則不進(jìn)行任何操作(報(bào)錯(cuò)回滾))

(2)自動(dòng)生成document id(自動(dòng)生成的id,長度為20個(gè)字符,URL安全,base64編碼,GUID,分布式系統(tǒng)并行生成時(shí)不可能會(huì)發(fā)生沖突)

POST /ecommerce/product {"name" : "gaolujie yagao","desc" : "gaoxiao meibai","price" : 30,"producer" : "gaolujie producer","tags": [ "meibai", "fangzhu" ] }

查詢商品(參見查詢專題詳解)

GET /ecommerce/product/1

修改商品name

全量替換:

PUT /ecommerce/product/1 {"name" : "jiaqiangban gaolujie yagao","desc" : "gaoxiao meibai","price" : 30,"producer" : "gaolujie producer","tags": [ "meibai", "fangzhu" ] }

部分修改:

POST /ecommerce/product/1/_update {"doc": {"name": "jiaqiangban gaolujie yagao"} }

刪除商品

DELETE /ecommerce/product/1

說明:不會(huì)理解物理刪除,只會(huì)將其標(biāo)記為deleted,當(dāng)數(shù)據(jù)越來越多的時(shí)候,在后臺(tái)自動(dòng)刪除


查詢專題版

query string search(不常用)

1、搜索全部商品:

GET /ecommerce/product/_search

查詢結(jié)果部分字段說明:
took:耗費(fèi)了幾毫秒。
timed_out:是否超時(shí),這里是沒有。
_shards:數(shù)據(jù)拆成了5個(gè)分片,所以對(duì)于搜索請(qǐng)求,會(huì)打到所有的primary shard(或者是它的某個(gè)replica shard也可以)。
hits.total:查詢結(jié)果的數(shù)量,3個(gè)document。
hits.max_score:score的含義,就是document對(duì)于一個(gè)search的相關(guān)度的匹配分?jǐn)?shù),越相關(guān),就越匹配,分?jǐn)?shù)也高。
hits.hits:包含了匹配搜索的document的詳細(xì)數(shù)據(jù)。

2、搜索商品名稱中包含yagao的商品,而且按照售價(jià)降序排序

GET /ecommerce/product/_search?q=name:yagao&sort=price:desc

3、指定要查詢出來商品的名稱和價(jià)格

GET /ecommerce/product/_search?_source=name,price

query DSL(Domain Specified Language,特定領(lǐng)域的語言)

1、查詢所有的商品(match_all)

GET /ecommerce/product/_search {"query": { "match_all": {} } }

2、查詢名稱包含yagao的商品,同時(shí)按照價(jià)格降序排序(sort)

GET /ecommerce/product/_search {"query" : {"match" : {"name" : "yagao"}},"sort": [{ "price": "desc" }] }

3、分頁查詢商品(from,size)
例如:總共3條商品,假設(shè)每頁就顯示1條商品,現(xiàn)在顯示第2頁,所以就查出來第2個(gè)商品

GET /ecommerce/product/_search {"query": { "match_all": {} },"from": 1,"size": 1 }

4、指定要查詢出來商品的名稱和價(jià)格(source)

GET /ecommerce/product/_search {"query": { "match_all": {} },"_source": ["name", "price"] }

5、查詢name和desc都含yagao的商品(multi_match)

GET /ecommerce/product/_search {"query": {"multi_match": {"query": "yagao","fields": ["name", "desc"]}} }

6、查詢價(jià)格大于等于30的商品(range)

GET /ecommerce/product/_search {"query": {"range": {"price": {"gte": 30}}} }

7、查詢name是yagao的商品(term 或者 terms數(shù)組指定多個(gè))

GET /test_index/test_type/_search {"query": {"term": {"name ": "yagao"}} }

說明:不常用。若想用term查詢,則被查詢的字段需要定義為不分詞。

query filter

1、搜索商品名稱包含yagao,而且售價(jià)大于25元的商品

GET /ecommerce/product/_search {"query" : {"bool" : {"must" : {"match" : {"name" : "yagao" }},"filter" : {"range" : {"price" : { "gt" : 25 } }}}} }

說明:bool 多條件查詢,含以下參數(shù):
must:返回的doc必須滿足must子句的條件,并且參與計(jì)算score
must_not:返回的文檔必須不滿足must_not定義的條件
should:返回的文檔可能滿足should子句的條件。在一個(gè)Bool查詢中,如果沒有must或者filter,有一個(gè)或者多個(gè)should子句,那么只要滿足一個(gè)就可以返回。minimum_should_match參數(shù)定義了至少滿足幾個(gè)子句。
filter:返回的doc必須滿足filter子句的條件,不參與計(jì)算sorce

full-text search(全文檢索)

GET /ecommerce/product/_search {"query" : {"match" : {"producer" : "yagao producer"}} }

phrase search(短語搜索)

跟全文檢索相對(duì)應(yīng),相反,全文檢索會(huì)將輸入的搜索串拆解開來,去倒排索引里面去一一匹配,只要能匹配上任意一個(gè)拆解后的單詞,就可以作為結(jié)果返回。

phrase search,要求輸入的搜索串,必須在指定的字段文本中,完全包含一模一樣的,才可以算匹配,才能作為結(jié)果返回。

GET /ecommerce/product/_search {"query" : {"match_phrase" : {"producer" : "yagao producer"}} }

highlight search(高亮搜索結(jié)果)

GET /ecommerce/product/_search {"query" : {"match" : {"producer" : "producer"}},"highlight": {"fields" : {"producer" : {}}} }

批量操作

批量查詢mget

獲取商品id為1和2的商品信息(假設(shè)在同一個(gè)index和type下)

GET /_mget {"docs" : [{"_index" : "ecommerce","_type" : "product","_id" : 1},{"_index" : "ecommerce","_type" : "product","_id" : 2}] }或者GET /ecommerce/_mget {"docs" : [{"_type" : "product","_id" : 1},{"_type" : "product","_id" : 2}] }或者GET /ecommerce/product/_mget {"ids": [1, 2] }

批量操作bulk

需求:
1、刪除id為1的商品
2、創(chuàng)建id為3的商品(name為“zhonghua yagao”)
3、修改商品2的name為“replaced zhonghua yagao”(采用全量替換的方式)
4、修改商品3的name為“bulk zhonghua yagao”(采用部分更新的方式)

POST /_bulk { "delete": { "_index": "ecommerce", "_type": "product", "_id": "1" }} { "create": { "_index": "ecommerce", "_type": "product", "_id": "3" }} { "name": "zhonghua yagao" } { "index": { "_index": "ecommerce", "_type": "product", "_id": "2" }} { "name": "replaced zhonghua yagao" } { "update": { "_index": "ecommerce", "_type": "product", "_id": "3", "_retry_on_conflict" : 3} } { "doc" : {"name" : "bulk zhonghua yagao"} }

說明:
(1)delete:刪除一個(gè)文檔,只要1個(gè)json串就可以了
(2)create:PUT /index/type/id/_create,強(qiáng)制創(chuàng)建
(3)index:普通的put操作,可以是創(chuàng)建文檔,也可以是全量替換文檔
(4)update:執(zhí)行的partial update操作

bulk api對(duì)json的語法,有嚴(yán)格的要求,每個(gè)json串不能換行,只能放一行,同時(shí)一個(gè)json串和一個(gè)json串之間,必須有一個(gè)換行

參考:ElasticSearch教程(龍果學(xué)院)

總結(jié)

以上是生活随笔為你收集整理的ElasticSearch常用搜索命令整理(长期更新...)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。