天天看點

ES 基本用法

ES的基本概念

    1> 叢集和節點

一個es叢集是由一個或多和es節點組成的集合

ES 基本用法

每一個叢集都有一個名字, 如之前的wali

每個節點都有自己的名字, 如之前的master, slave1, slave2

節點是可以存儲資料, 參與索引資料等的獨立服務

2> 索引(類似于資料庫裡面的database)

索引是含有相同屬性的文檔集合

索引在es中是通過一個名字來識别的, 必須是英文字母小寫, 且不含中劃線

3> 類型(相當于sql中的table)

一個索引可以定義一個或多個類型, 文檔必須屬于一個類型

4> 文檔(相當于sql中的一行記錄)

文檔是可以被索引的基本資料機關

5> 分片

每個索引都有多個分片, 每個分片都是一個luncene索引

分片的好處: 分攤索引的搜尋壓力, 分片還支援水準的拓展和拆分以及分布式的操作, 可以提高搜尋和其他處理的效率

6> 備份

拷貝一個分片就完成了分片的備份

備份的好處: 當主分片失敗或者挂掉, 備份就可以代替分片進行操作, 進而提高了es的可用性, 備份的分片還可以進行搜尋操作, 以分攤搜尋的壓力.

ES在建立索引時, 預設建立5個分片, 一份備份, 可以修改, 分片的數量隻能在建立索引的時候指定, 索引建立後就不能修改分片的數量了, 而備份是可以動态修改的

2.2 ES的基本用法

ES以RESTFul風格來命名API的, 其API的基本格式如下

http://<ip>:<port>/<索引>/<類型>/<文檔id>

ES的動作是以http方法來決定的: 常用的http方法: GET/PUT/POST/DELETE

Eg1, 建立索引, 結合head插件建立索引的執行個體

ES 基本用法
ES 基本用法

傳回”概覽”檢視建立情況

ES 基本用法

建立索引分為: 結構化建立與非結構化建立

檢視索引是否是結構化的方法

ES 基本用法
ES 基本用法

Mappings是結構化的一個關鍵詞, 其後内容是空的, 說明這個索引是一個非結構化的索引

建立結構化索引的方法

點選head插件的”複合查詢”

ES 基本用法

驗證json後, 送出請求,

ES 基本用法

傳回head插件”概覽檢視”

ES 基本用法

Head插件中編寫json發送請求比較複雜, 可以使用postman或者是fiddler等工具進行請求的發送

ES 基本用法

請求資料的json格式

{

    "settings": {

        "number_of_shards": 3,

        "number_of_replicas": 1

    },

    "mappings": {

        "man": {

            "properties": {

                "name": {

                    "type": "text"

                },

                "country": {

                    "type": "keyword"

                "age": {

                    "type": "integer"

                },

                "date": {

                    "type": "date",

                    "format": "yyyy-MM-dd HH:mm:ss||yyyy:MM:dd||epoch_millis"

                }

            }

        },

        "woman": {}

    }

}

2.2.1> 資料插入

文檔id, 唯一索引值, 指向文檔資料

2.2.1.1 指定文檔id插入

使用http中的put方法,

插入時輸入的ip位址, 如​​http://192.168.253.129:9200/people/man/1​​

請求參數依次為:索引名稱/類型名稱/文檔id

請求參數

  "name": "瓦力",

  "country": "China",

  "age": 30,

  "date": "1987-03-07 12:12:12"

ES 基本用法

Head插件中”資料浏覽”

ES 基本用法

2.2.1.2 自動産生文檔id插入

使用http中的post方法,

插入時輸入的ip位址, 如http://192.168.253.129:9200/people/man

  "name": "超重瓦力",

  "age": 40,

  "date": "1977-03-07 12:12:12"

響應結果

ES 基本用法

2.2.2> 修改文檔資料

2.2.2.1 直接修改文檔

http方法: post方法

請求位址:  ​​http://192.168.253.129:9200/people/man/1/_update​​

關鍵詞: _update, doc

    "doc": {

        "name": "誰是瓦力"

“doc”為關鍵字, 要修改的文檔放在doc中, 執行個體修改了type為people索引下man中id為1 的name屬性

傳回的結果

ES 基本用法

可以在head插件中”資料浏覽”中驗證修改結果

ES 基本用法

2.2.2.2 腳本修改文檔

通過腳本修改的api格式與直接修改的是一緻的

  "script": {

    "lang": "painless",

    "inline": "ctx._source.age += 30"

  }

關鍵字”script”: 标志以腳本的方式修改文檔

“lang”: 表示以何種腳本語言進行修改, “painless”表示以es内置的腳本語言進行修改. 此外es還支援多種腳本語言, 如Python, js等等

“inline”:指定腳本内容 “ctx”代表es上下文, _source 代表文檔

ES 基本用法

可以在head插件中”資料浏覽”檢查修改資料

此外還有其他的參數設定方式, 例如将參數放到外面

    "inline": "ctx._source.name = params.name; ctx._source.age = params.age",

    "params": {

      "age": 30,

      "name": "誰是瓦力"

ES 基本用法

2.2.3> 删除

2.2.3.1 删除文檔

http方法: delete

請求路徑http://192.168.253.129:9200/people/man/1

ES 基本用法

2.2.3.1 删除索引

1. 可以通過head插件進行删除

ES 基本用法

2. 通過api删除

Http方法: delete

連結位址: http://192.168.253.129:9200/book

ES 基本用法
上一篇: VIM基本用法
下一篇: menu基本用法