天天看點

elasticsearch常用操作

作者:幹飯人小羽

1. 檢視基本配置#

1.1 檢視配置#

Copy# 擷取單個index(庫的配置)
GET /index/_settings   

# 擷取全部配置,全部庫的配置
GET /_settings/_all     
           

1.2 檢視所有索引#

CopyGET /_cat/indices?v
           

1.2 檢視索引中所有字段#

CopyGET /index/type/_mapping
           

2. query DSL(Domain Sepcified Language)#

2.1 簡單查詢#

CopyGET /index/type/_search?q=id:300421
           

2.2 擷取所有記錄#

Copy# 擷取所有記錄
POST /index/type/_search
{
    "query":{"match_all":{}}
}

# 查詢 es 中所有的文檔,并按照某一個條件排序
GET /index/type/_search?q=*&sort=_id:asc&pretty
           

2.3 根據條件查詢#

CopyGET /index/type/_search
{
    "query":{
          "match":{
                    "name":"zhangsan"
          }
    },
    "sort":[
        {
             "age":"desc"
       }
   ]
}
           

2.4 分頁查詢#

CopyGET /index/type/_search
{
    "query":{"match_all":{}},
    "from":1,
    "size":2
}
           

2.5 指定查詢結果的字段#

CopyGET /index/type/_search
{
    "query":{"match_all":{}},
    "_source":["name","age"]
}
           

2.6 query filter#

CopyGET /index/type/_search
{
    "query":{
          "bool":{
                    "must":{
                             "match":{
                                   "name":"zhangsan"
                             }
                     },
                     "filter":{
                              "range":{
                                      "age":{"gt":25}
                             }
                    }
          }
    },
    "sort":[
        {
             "age":"desc"
       }
   ]
}
           

2.7 full-text search#

CopyGET /index/type/_search
{ 
    "query":{
          "match":{
                  "name":"zhangsan"
            }              
    } 
}
           

2.8 phrase search(短語搜尋:完全比對)#

CopyGET /index/type/_search
{ 
    "query":{
          "match_phrase":{
                  "name":"zhangsan"
            }              
    } 
}
           

2.9 highlight search(高亮搜尋)#

CopyGET /index/type/_search
{ 
    "query":{
          "match_phrase":{
                  "name":"zhangsan"
            }              
    } ,
   "highlight":{
              "fields":{
                    "name":{}
               }
   }
}
           

3.新增資料#

3.1 插入資料:指定id#

CopyPUT /index/type/1 
{
	"name": "張三",
	"age": 20,
	"date": "2019-10-29"
}
           

3.2 插入資料:使用es預設建立的id#

CopyPOST /index/type
{
	"name": "李四",
	"age": 29,
	"date": "2019-10-31"
}
           

4.修改資料#

4.1 向已有索引中添加新字段#

CopyPUT /index/type/_mapping
{
    "properties": {
        "name": {
            "type": "text", # 這裡為增量更新,原有字段一定要保留,否則失敗
            "fields": { # 新增的部分
                "standard": {
                    "type": "text",
                    "analyzer": "standard"
                }
            },
            "analyzer": "my_ik_max_word",
            "search_analyzer": "my_ik_smart"
        }
}
           

4.2 批量更新某個字段的值#

CopyPOST /index/type/_update_by_query
{
   "script": {
        "inline": "ctx._source.name = params.name;ctx._source.age=params.name", 
       "params": {
           "name": "zhangsan",
           "age": ctx._source.age + 1 # 這裡也可以為通過本字段中某個值通過計算後再指派
       },
        "lang": "painless" # painless 高性能模式
    },
    "query": { # 這裡為篩選條件,會更新滿足條件的值,不寫或match_all會更新全部
        "terms": {
            "_id": ["1"]
        }
    }
}

           

5. 删除資料#

5.1 删除指定id#

CopyPOST /index/type/_delete_by_query
{
    "query": {
        "terms": {
            "_id": ["123"]
        }
    }
}
           

備注:這裡隻寫了部分情況的,後續會根據學習工作過程中遇到的新需求不斷補充完善。

繼續閱讀