日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Elasticsearch-04 ES中的术语和基本用法

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elasticsearch-04 ES中的术语和基本用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 概述
  • 術語
  • 基本用法
    • 創建索引
      • 非結構化創建
      • 結構化創建
  • 官方API文檔
  • 插入
    • 指定文檔id插入(PUT方法)
    • 指定生成文檔id插入 (POST方法)
  • 修改
    • 直接修改文檔
    • 腳本修改文檔
  • 刪除
    • 刪除Document 文檔
    • 刪除 index 索引
  • 查詢

概述

有時候對象不僅僅只是簡單的鍵值列表, 更多時候它擁有復雜的數據結構, 比如包含日期、 地理位置、 另一個對象或者數組。

將這些數據保存到由行和列組成的關系數據庫中, 就好像是把一個豐富的對象拆散了放入一個非常大的表格中:你不得不拆散對象以適應表模式(通常一列表示一個字段) , 然后又不得不在查詢的時候重建它們。

Elasticsearch是面向文檔(document oriented)的, 這意味著它可以存儲整個對象或文檔即document

然而它不僅僅是存儲, 還會索引(index)每個文檔的內容使之可以被搜索

在Elasticsearch中, 你可以對文檔(而非成行成列的數據) 進行索引、 搜索、 排序、 過濾。這也是Elasticsearch能夠執行復雜的全文搜索的原因之一

Elasticsearch使JSON 作為文檔序列化格式。


術語

  • 索引:含有相同屬性的文檔集合 ,相當于關系型數據庫中的database
  • 類型:索引可以定義一個或多個類型,文檔必須屬于一個類型,相當于table
  • 文檔:文檔是可以被索引的基本數據單位 ,相當于一條記錄
Elasticsearch -> Indexes-> Types -> Documents -> Fields Relational DB -> Databases -> Tables -> Rows -> Columns

和索引相關的有“分片”和“備份”

  • 分片:每個索引都有多個分片,每個分片是一個Lucene索引

假如一個索引數據量很大,就會產生硬盤壓力很大。所以就要‘分片’來分擔壓力。可以水平的擴展和拆分以及分布式的操作,可以提高搜索和其他操作

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

當一個主分片失敗或出現問題時,"備份分片"就可以代替工作,從而提高了ES的可用性,備份的分片還可以執行搜索的操作,來分攤搜索的壓力。

  • ES創建索引時默認創建5個分片一個備份 , 分片的數量只能在創建索引時指定,備份可以動態修改

  • 索引命名規范:字母小寫,且不含中劃線


基本用法

使用RESTful API, 通過9200端口的與Elasticsearch進行通信

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

HTTP方法:

GET , POST , PUT , HEAD , DELETE

創建索引

非結構化創建

粗線框代表主分片,對應的相同數字的細線框則代表備份,我們創建book索引的時候,默認5個分片(0,1,2,3,4) 以及一個備份 ,如上所示。

怎么確定是非結構化的呢?

結構化的關鍵詞 mappings,為空說明為非結構化,并沒有結構映射的信息。


結構化創建

{"novel": {"properties": {"title": {"type": "text"}}} }


點擊Request,返回成功后,回到overview刷新下索引,查看索引信息如下

在web頁面書寫json沒有提示,很容易出錯,這里我們通過postman來新建一個索引吧

{"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":{}} }

時間格式 epoch_millis為時間戳格式


body為json格式, 請求方法為put , 請求url為 http://localhost:9200/people

返回結果:

{"acknowledged": true,"shards_acknowledged": true,"index": "people" }

通過head插件查看結果,刷新下

查看索引信息如下


官方API文檔

當前版本 7.0 : https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

5.6的版本的: https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html


插入

我們往 people 這個索引中的 man類型里寫入一條數據即文檔

指定文檔id插入(PUT方法)

{"name":"artisan","country":"china","age":18,"date":"2019-04-19" }


PUT 方法
http://localhost:9200/people/man/1 -->" ip:port/索引/類型/文檔id

到head插件中查看下數據

id=1 ,是我們自己指定的

指定生成文檔id插入 (POST方法)


POST 方法
RestFul 請求中僅指定 索引和類型即可,無需指定id,es自動生成id

在head插件中刷新下,通過Brower瀏覽數據如下


修改

直接修改文檔

URL: http://localhost:9200/people/man/1/_update 指定id ,注意后面要跟上“_update”

方法: POST

修改內容

“doc”:{需要修改的信息}

head插件查看修改后的數據


腳本修改文檔

{"script":{"lang":"painless","inline":"ctx._source.age += 10"} }

或者,將參數放在外面指定,比如

{"script":{"lang":"painless","inline":"ctx._source.age = params.age","params":{"age":99}} }


刪除

刪除Document 文檔

URL : http://localhost:9200/people/man/1/ ,刪除id=1的文檔

方法: DELETE

通過head插件查看,剛才id=1的數據已經被刪掉了


刪除 index 索引

方式一: web頁面中刪除

索引被刪除后,索引中的數據將一并被刪除 ,請謹慎操作。

方式二: 通過postman ,

方法: DELETE, url : http://ip:port/index

通過head插件查看


查詢

另開篇介紹,見ElasticSearch-05ElasticSearch之查詢與過濾


總結

以上是生活随笔為你收集整理的Elasticsearch-04 ES中的术语和基本用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。