使用kibana或postman操作Elasticsearch的常用命令
阿新 • • 發佈:2019-02-07
前言
執行系統:windows10
JDK版本:1.8
Elasticsearch版本:5.6.6
外掛:kibana、elasticsearch-head
工具:postman
一、叢集
檢視叢集是否健康
GET /_cluster/health
二、節點
檢視節點列表
後面加了 ?v 可以把各個列代表的含義給顯示出來
GET /_cat/nodes?v
三、索引
1 查詢索引
1.1 查詢所有索引
GET /_cat/indices
1.2 查詢所有的索引及儲存大小
GET /_cat/indices?v
1.3 查詢索引的對映
GET /test_index/_mapping
2. 新增一個索引(通過mapping)
PUT /people { "settings": { "number_of_shards": 3, "number_of_replicas": 1 }, "mappings": { "man": { "dynamic": "strict", "properties": { "name": { "type": "text" }, "age": { "type": "integer" }, "birthday": { "type": "date", "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" }, "address":{ "dynamic": "true", "type": "object" } } } } }
3. 刪除索引
3.1 刪除一個索引
DELETE /people
3.2 刪除多個索引
DELETE /index_one,index_two
4. 新增欄位對映
PUT /people/_mapping/man
{
"properties": {
"tags":{
"type": "text"
}
}
}
5. 索引的別名
5.1 建立索引的別名
PUT /test_index/_alias/test
5.2 查詢索引的別名
GET /test_index/_alias/*
5.3 查詢別名指向哪一個索引
GET /*/_alias/test
四、文件
1. 增加文件
1.1 自定義ID
可以自動建立索引、型別,自己定義一個id
PUT /people/man/1
{
"name": "葉良辰",
"country": "china",
"age": 25,
"birthday": "1993-01-01",
"desc": "葉良辰,本地人,狂妄自大,惹了他,會有一百種方法讓你呆不下去!與趙日天是好基友,兩個人風風火火闖九州"
}
1.2 隨機生成ID
可以自動建立索引、型別,自動建立一個id
POST /people/man
{
"name": "葉良辰",
"country": "china",
"age": 25,
"birthday": "1993-01-01",
"desc": "葉良辰,本地人,狂妄自大,惹了他,會有一百種方法讓你待不下去!與趙日天是好基友,兩個人風風火火闖九州"
}
2. 修改文件
2.1全文修改
全文修改使用的是PUT命令,把所有欄位都帶上
PUT /people/man/1
{
"name": "葉良辰",
"country": "china",
"age": 25,
"birthday": "1993-01-01",
"desc": "葉良辰,本地人,狂妄自大,惹了他,會有一百種方法讓你呆不下去!與趙日天是好基友,兩個人風風火火闖九州"
}
2.2部分修改(partial update)
使用POST命令,裡面使用doc修改某個欄位值
POST /people/man/1/_update
{
"doc": {
"name": "zhangsan"
}
}
2.3 通過指令碼直接修改
POST test_index/test_type/2/_update
{
"script": "ctx._source.age += 10"
}
或者
POST /people/man/1/_update
{
"script": {
"lang": "painless",
"source": "ctx._source.age += 10"
}
}
2.4 通過指令碼的引數方式
POST /people/man/1/_update
{
"script": {
"lang": "painless",
"source": "ctx._source.age = params.age",
"params": {
"age": 100
}
}
}
2.5 通過groovy指令碼檔案方式
首先在%ES_HOME%/config/scripts資料夾下面新建一個groovy檔案,取名add-age.groovy
編輯檔案,新增下列內容
ctx._source.age += param.num
執行下面的命令
POST test_index/test_type/2/_update
{
"script": {
"lang": "groovy",
"file": "add-age",
"params": {
"num": 15
}
}
}
2.6 文件不存在時的修改(upsert)
在修改document的時候,如果該文件不存在,則使用upsert操作進行初始化
POST people/man/10/_update
{
"script": "ctx._source.age += 10",
"upsert": {
"age": 20
}
}
雖然用了+=,但是,上面的結果卻是20,因為文件不存在,只是進行了初始化!
3. 刪除文件
3.1 刪除單個文件
DELETE /people/man/1
3.2 刪除type下的所有文件
POST test_index/test_type/_delete_by_query?conflicts=proceed
{
"query": {
"match_all": {}
}
}
4.查詢文件
下面列舉一些簡單的查詢,更高階的查詢在第五部分做介紹
4.1 查詢單個文件
GET /people/man/2
4.2 使用_mget批量查詢文件
GET /_mget
{
"docs": [
{
"_index": "test_index",
"_type": "test_type",
"_id": 1
},
{
"_index": "test_index",
"_type": "test_type",
"_id": 2
}
]
}
index和type相同的時候,可以合併到一起:
GET /test_index/test_type/_mget
{
"docs": [
{
"_id": 1
},
{
"_id": 2
}
]
}
4.3 查詢所有文件
方式一(簡單查詢):
GET /people/_search
方式二:
POST /people/_search
{
"query": {
"match_all": {}
}
}
4.4 查詢出某些欄位內容
後面跟了 ?_source=field1,field2
GET people/man/_search?_source=name,country
{
"query": {
"match": {
"age": "25"
}
}
}
4.5 查詢多個索引下的多個type
GET /index1,index2/type1,type2/_search
查詢所有索引下的部分type
GET /_all/type1,type2/_search
4.6 模糊查詢(全文搜尋)
注意:下面的“葉良辰”會被拆分成:葉、良、辰,只要name裡面包含這三個字的任意一個,都會被查詢到!
另外,中英文搜尋會不一樣,中文是以一個漢字為單位,
英文預設以一個單詞為單位進行拆分
POST /people/_search
{
"query": {
"match": {
"name": "葉良辰"
}
},
"sort": [
{
"birthday": {
"order": "desc"
}
}
]
}
4.7 全文搜尋的精準度
4.7.1 搜尋結果中必須包括run、jump兩種愛好
GET people/_search
{
"query": {
"match": {
"hobby": {
"query": "run jump",
"operator": "and"
}
}
}
}
4.7.2 使用百分比,搜尋結果中必須包括6個愛好中的一半,也就是3個
GET people/_search
{
"query": {
"match": {
"hobby": {
"query": "run jump basketball football piano pingpang",
"minimum_should_match": "50%"
}
}
}
}
4.7.3 使用數量,搜尋結果中必須包括3個愛好
GET people/_search
{
"query": {
"bool": {
"should": [
{"match": {
"hobby": "basketball"
}},
{"match": {
"hobby": "pingpang"
}},
{"match": {
"hobby": "piano"
}},
{"match": {
"hobby": "run"
}}
],
"minimum_should_match": 3
}
}
}
五、高階查詢
由於內容比較多,篇幅比較大,這裡把文章分為兩部分,本文是簡單的增刪改查
比較複雜的查詢請參考:點選開啟連結