一、基本命令
1、獲取所有_cat命令
curl -X GET localhost:9200/_cat
2、獲取es集群服務(wù)健康狀態(tài)
curl -X GET localhost:9200/_cat/health?v
epoch: 時(shí)間戳的 Unix 時(shí)間戳格式,表示快照生成的時(shí)間。
timestamp: 可讀性更強(qiáng)的時(shí)間戳格式,表示快照生成的時(shí)間(08:06:34)。
cluster: Elasticsearch 集群的名稱,這里是 "es-cluster"。
status: 集群的健康狀態(tài),這里是 "yellow"。Elasticsearch 集群狀態(tài)通常有三種:green(綠色,健康),yellow(黃色,部分健康),red(紅色,不健康)。"yellow" 狀態(tài)表示集群中的某些副本不可用,但主分片是可用的。
node.total: 集群中節(jié)點(diǎn)的總數(shù),這里是 1 個(gè)節(jié)點(diǎn)。
node.data: 充當(dāng)數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)數(shù),這里是 1 個(gè)節(jié)點(diǎn)。
shards: 集群中分片的總數(shù),這里是 98 個(gè)分片。
pri: 主分片(primary shard)的數(shù)量,這里是 98 個(gè)主分片。
relo: 正在進(jìn)行重新定位的分片數(shù)量,這里是 0。
init: 初始化的分片數(shù)量,這里是 0。
unassign: 未分配的分片數(shù)量,這里是 27。
pending_tasks: 掛起的任務(wù)數(shù),這里是 0。
max_task_wait_time: 最大任務(wù)等待時(shí)間,這里是沒有具體數(shù)值。
active_shards_percent: 活動(dòng)分片的百分比,這里是 78.4%。這表示在集群中,有 78.4% 的分片是活動(dòng)的,而剩下的可能是不可用或者正在恢復(fù)的。
3、查看es節(jié)點(diǎn)信息
curl -X GET localhost:9200/_cat/nodes?v
ip: 節(jié)點(diǎn)的IP地址,這里是"192.168.52.11"。
heap.percent: 節(jié)點(diǎn)的堆內(nèi)存使用百分比,這里是67%。
ram.percent: 節(jié)點(diǎn)的系統(tǒng)內(nèi)存使用百分比,這里是98%。
cpu: 節(jié)點(diǎn)的CPU使用率,這里是10%。
load_1m: 1分鐘負(fù)載平均值,這里是0.69。
load_5m: 5分鐘負(fù)載平均值,這里是0.36。
load_15m: 15分鐘負(fù)載平均值,這里是0.50。
node.role: 節(jié)點(diǎn)的角色,這里是"*",表示這是一個(gè)主節(jié)點(diǎn)(master node)。
master: 指示該節(jié)點(diǎn)是否是主節(jié)點(diǎn),這里是"*",表示它是主節(jié)點(diǎn)。
name: 節(jié)點(diǎn)的名稱,這里是"node-1"。
4、查看es指定節(jié)點(diǎn)信息
curl -X GET localhost:9200/_nodes/node-1?pretty=true
二、索引操作
1、查看ES中所有的索引
curl -X GET localhost:9200/_cat/indices?v
health: 索引的健康狀態(tài),這里是 "yellow"。Elasticsearch 索引的健康狀態(tài)有三種:green(綠色,健康),yellow(黃色,部分健康),red(紅色,不健康)。"yellow" 狀態(tài)表示索引的某些分片處于未分配狀態(tài),但主分片是可用的。
status: 索引的狀態(tài),這里是 "open"。這表示索引處于打開狀態(tài),可以進(jìn)行讀取和寫入操作。
index: 索引的名稱,這里是 "nginx-access-log-2023.09.13"。
uuid: 索引的唯一標(biāo)識(shí)符。
pri: 主分片(primary shard)的數(shù)量,這里是 1 個(gè)主分片。
rep: 副本分片(replica shard)的數(shù)量,這里也是 1 個(gè)副本分片。
docs.count: 索引中文檔的總數(shù),這里是 20。
docs.deleted: 索引中已刪除的文檔數(shù)量,這里是 0。
store.size: 索引的存儲(chǔ)大小,這里是 34.1KB。
pri.store.size: 主分片的存儲(chǔ)大小,這里也是 34.1KB。
2、新建索引
curl -X PUT localhost:9200/testyf
3、新建索引并增加數(shù)據(jù) POST /索引/端點(diǎn)
POST /data/_bulk
{ "index": { "_id": 1 }}
{ "articleID" : "XHDK-A-1293-#fJ3", "userID" : 1, "hidden": false, "postDate": "2022-01-01" }
{ "index": { "_id": 2 }}
{ "articleID" : "KDKE-B-9947-#kL5", "userID" : 1, "hidden": false, "postDate": "2022-01-02" }
4、追加數(shù)據(jù)
# 追加新增字段
POST /data/_bulk
{"update":{"_id":"1"}}
{"doc":{"title":"this is java and elasticsearch blog"}}
5、刪除索引
curl -X DELETE localhost:9200/testyf
6、查看指定索引信息
curl -X GET localhost:9200/nginx-access-log-2023.09.13?pretty
7、查看索引的統(tǒng)計(jì)信息
curl -X GET localhost:9200/nginx-access-log-2023.09.13/_stats?pretty
三、文檔操作
一)查詢索引中的全部文檔
curl -X GET localhost:9200/nginx-access-log-2023.09.13/_search?pretty
注意:?pertty 表示讓數(shù)據(jù)格式化,更好的展示
?2)根據(jù)條件查詢索引中的文檔
單一條件搜索:
1、搜索 response_code 包含 200
POST /nginx-access-log-2023.09.13/_search?pretty
{
? "query": {
? ? "match": {
? ? ? "response_code": "200"
? ? }
? }
}
2、搜索 message 包含 34 或者 包含 36
POST /nginx-access-log-2023.09.25/_search?pretty
{
? "query": {
? ? "match": {
? ? ? "message": "34 36"
? ? }
? },
? "size": 1000
}
3、搜索 message 包含 34 并且 包含 36
POST /nginx-access-log-2023.09.25/_search?pretty
{
? "query": {?
? ? "match": {?
? ? ? "message": {
? ? ? ? "query": "34 36",
? ? ? ? "operator": "and"
? ? ? }
? ? }?
? },
? "size": 1000
}
4、搜索 message 包含 34 36 15 22 中超過 50% 以上比例的
POST /nginx-access-log-2023.09.25/_search?pretty
{
? "query": {?
? ? "match": {?
? ? ? "message": {
? ? ? ? "query": "34 36 15 22",
? ? ? ? "minimum_should_match": "50%"
? ? ? }
? ? }?
? },
? "size": 1000
}
5、使用sort對(duì)查詢數(shù)據(jù)排序,并按照size返回查詢的數(shù)量(desc:降序 / asc:升序)
GET /data/_search?size=2
{
? "query": {
? ? "match": {
? ? ? "title": "java elasticsearch"
? ? }
? },
? "sort": {
? ? "postDate": {
? ? ? "order": "desc"
? ? }
? }
}
多條件搜索:
1、(&&使用 must )搜索 response_code 包含 200,并且 @timestamp 包含 "2023-09-25T12:43:46.000Z"
POST /nginx-access-log-2023.09.25/_search?pretty
{
?? ?"query": {
?? ??? ?"bool": {
?? ??? ??? ?"must": [{
?? ??? ??? ??? ?"match": {
?? ??? ??? ??? ??? ?"response_code": "200"
?? ??? ??? ??? ?}
?? ??? ??? ?},{
?? ??? ??? ??? ?"match": {
?? ??? ??? ??? ??? ?"@timestamp": "2023-09-25T12:43:46.000Z"
?? ??? ??? ??? ?}
?? ??? ??? ?}]
?? ??? ?}
?? ?},
?? ?"size": 100
}
2、(|| 使用 should )搜索 response_code 包含 200,或者 @timestamp 包含 "2023-09-25T12:43:46.000Z"
POST /nginx-access-log-2023.09.25/_search?pretty
{
?? ?"query": {
?? ??? ?"bool": {
?? ??? ??? ?"should": [{
?? ??? ??? ??? ?"match": {
?? ??? ??? ??? ??? ?"response_code": "200"
?? ??? ??? ??? ?}
?? ??? ??? ?},{
?? ??? ??? ??? ?"match": {
?? ??? ??? ??? ??? ?"@timestamp": "2023-09-25T12:43:46.000Z"
?? ??? ??? ??? ?}
?? ??? ??? ?}]
?? ??? ?}
?? ?},
?? ?"size": 100
}
?3、(|| 使用 should )搜索 response_code 包含 200,或者 @timestamp 包含 "2023-09-25T12:43:46.000Z",或者 message 包含 "Windows",至少滿足2個(gè)以上
POST /nginx-access-log-2023.09.25/_search?pretty
{
?? ?"query": {
?? ??? ?"bool": {
?? ??? ??? ?"should": [{
?? ??? ??? ??? ?"match": {
?? ??? ??? ??? ??? ?"response_code": "200"
?? ??? ??? ??? ?}
?? ??? ??? ?},{
?? ??? ??? ??? ?"match": {
?? ??? ??? ??? ??? ?"@timestamp": "2023-09-25T12:43:46.000Z"
?? ??? ??? ??? ?}
?? ??? ??? ?},{
?? ??? ??? ??? ?"match": {
?? ??? ??? ??? ??? ?"message": "Windows"
?? ??? ??? ??? ?}
?? ??? ??? ?}],
? ? ? ? ? ? "minimum_should_match": 2
?? ??? ?}
?? ?},
?? ?"size": 100
}
4、搜索 response_code 包含 200,并且 @timestamp 不包含 "2023-09-25T12:43:46.000Z"
POST /nginx-access-log-2023.09.25/_search?pretty
{
?? ?"query": {
?? ??? ?"bool": {
?? ??? ??? ?"must": [{
?? ??? ??? ??? ?"match": {
?? ??? ??? ??? ??? ?"response_code": "200"
?? ??? ??? ??? ?}
?? ??? ??? ?}],
?? ??? ??? ?"must_not": [{
?? ??? ??? ??? ?"match": {
?? ??? ??? ??? ??? ?"@timestamp": "2023-09-25T12:43:46.000Z"
?? ??? ??? ??? ?}
?? ??? ??? ?}]
?? ??? ?}
?? ?},
?? ?"size": 100
}
?5、統(tǒng)計(jì) response_code 包含 200 的有多少個(gè)
POST /nginx-access-log-2023.09.25/_count?pretty
{
?? ?"query": {
?? ??? ?"bool": {
?? ??? ??? ?"must": [{
?? ??? ??? ??? ?"match": {
?? ??? ??? ??? ??? ?"response_code": "200"
?? ??? ??? ??? ?}
?? ??? ??? ?}]
?? ??? ?}
?? ?}
}
?3)轉(zhuǎn)換
term:不分詞,直接匹配字段的完整值
match:根據(jù)字段的分詞器對(duì)搜索文本進(jìn)行分詞
1、普通match如何轉(zhuǎn)換為term+should
轉(zhuǎn)換前:
GET /data/_search
{
? "query": {
? ? "match": {
? ? ? "title": "java elasticsearch"
? ? }
? }
}
轉(zhuǎn)換后:
GET /data/_search
{
? "query": {
? ? "bool": {
? ? ? "should": [
? ? ? ? {
? ? ? ? ? "term": {
? ? ? ? ? ? "title": "java"
? ? ? ? ? }
? ? ? ? },
? ? ? ? {
? ? ? ? ? "term": {
? ? ? ? ? ? "title": "elasticsearch"
? ? ? ? ? }
? ? ? ? }
? ? ? ]
? ? }
? }
}
2、and match如何轉(zhuǎn)換為term+must
轉(zhuǎn)換前:
GET /data/_search
{
? "query": {
? ? "match": {
? ? ? "title": {
? ? ? ? "query": "java elasticsearch",
? ? ? ? "operator": "and"
? ? ? }
? ? }
? }
}
轉(zhuǎn)換后:
GET /data/_search
{
? "query": {
? ? "bool": {
? ? ? "must": [
? ? ? ? {
? ? ? ? ? "term": {
? ? ? ? ? ? "title": "java"
? ? ? ? ? }
? ? ? ? },
? ? ? ? {
? ? ? ? ? "term": {
? ? ? ? ? ? "title": "elasticsearch"
? ? ? ? ? }
? ? ? ? }
? ? ? ]
? ? }
? }
}
3、minimum_should_match如何轉(zhuǎn)換
轉(zhuǎn)換前:文章來源:http://www.zghlxwxcb.cn/news/detail-764462.html
GET /data/_search
{
? "query": {
? ? "match": {
? ? ? "title": {
? ? ? ? "query": "java elasticsearch hadoop spark",
? ? ? ? "minimum_should_match": "75%"
? ? ? }
? ? }
? }
}
轉(zhuǎn)換后:文章來源地址http://www.zghlxwxcb.cn/news/detail-764462.html
GET /data/_search
{
? "query": {
? ? "bool": {
? ? ? "should": [
? ? ? ? {
? ? ? ? ? "term": {
? ? ? ? ? ? "title": "java"
? ? ? ? ? }
? ? ? ? },
? ? ? ? {
? ? ? ? ? "term": {
? ? ? ? ? ? "title": "elasticsearch"
? ? ? ? ? }
? ? ? ? },
? ? ? ? {
? ? ? ? ? "term": {
? ? ? ? ? ? "title": "hadoop"
? ? ? ? ? }
? ? ? ? },
? ? ? ? {
? ? ? ? ? "term": {
? ? ? ? ? ? "title": "spark"
? ? ? ? ? }
? ? ? ? }
? ? ? ],
? ? ? "minimum_should_match": 3
? ? }
? }
}
到了這里,關(guān)于ES常用查詢命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!