使用kibana或postman操做Elasticsearch的經常使用命令

前言
服務器:CentOS-6.7node

運行系統:windows10windows

JDK版本:1.8服務器

Elasticsearch版本:5.6.6app

插件:kibana、elasticsearch-headless

工具:postmanelasticsearch

1、集羣
查看集羣是否健康工具

GET /_cluster/health
2、節點
查看節點列表
後面加了 ?v 能夠把表頭給顯示出來post

GET /_cat/nodes?v.net


3、索引
1 查詢索引
1.1 查詢全部索引
GET /_cat/indices?v
1.2 查詢單個索引的映射
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"
        }
      }
    }
  }
}
"dynamic": "strict"  表示若是遇到陌生field會報錯插件

"dynamic": "true"   表示若是遇到陌生字段,就進行dynamic mapping

"dynamic": "false"   表示若是遇到陌生字段,就忽略

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
4、文檔
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 /people/man/1/_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 /people/man/1/_update
{
"script": {
"lang": "groovy",
"file": "add-age",
"params": {
"num": 15
}
}
}
2.6 文檔不存在時的修改(upsert)
在修改document的時候,若是該文檔不存在,則使用upsert操做進行初始化

POST people/man/1/_update
{
"script": "ctx._source.age += 10",
"upsert": {
"age": 20
}
}
雖然用了+=,可是,上面的結果倒是20,由於文檔不存在,只是進行了初始化!

3. 刪除文檔
3.1 刪除單個文檔
DELETE /people/man/1
3.2 刪除type下的全部文檔
POST /people/man/_delete_by_query?conflicts=proceed
{
"query": {
"match_all": {}
}
}
4.查詢文檔
下面列舉一些簡單的查詢,更高級的查詢在第五部分作介紹

4.1 查詢單個文檔
GET /people/man/2
4.2 使用_mget批量查詢文檔
GET /_mget
{
"docs": [
{
"_index": "people",
"_type": "man",
"_id": 1
},
{
"_index": "people",
"_type": "man",
"_id": 2
}
]
}
index和type相同的時候,能夠合併到一塊兒:

GET /people/man/_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
}
}
}

5、高級查詢因爲內容比較多,篇幅比較大,這裏把文章分爲兩部分,本文是簡單的增刪改查————————————————版權聲明:本文爲CSDN博主「前方一片光明」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。原文連接:https://blog.csdn.net/qq_26230421/article/details/80366649

相關文章
相關標籤/搜索