當前位置:網站首頁>Es簡介和基本增删查改

Es簡介和基本增删查改

2022-01-27 06:42:53 A1L__

Es簡介

  • Elasticsearch 是一個基於Lucene的分布式搜索和分析引擎
  • Elasticsearch是一個開源的高擴展的分布式全文檢索引擎,它可以近乎實時的存儲、檢索數據;本身擴展性很好,可以擴展到上百臺服務器,處理PB級別的數據
  • Java開發,在Apache開源協議
  • 使用Lucene作為其核心來實現所有索引和搜索的功能,但是它的目的是通過簡單的RESTful API來隱藏Lucene的複雜性,使得全文檢索變得簡單

一、Es核心概念

-集群:單臺機器,多臺機器
-節點:集群中的每一臺機器叫一個節點
-分片:數據可以分為較小的分片。每個分片放到不同的服務器上
-副本:
-全文檢索:

二、ELK是什麼:做日志收集和分析

ELK=elasticsearch+Logstash+kibana
elasticsearch:後臺分布式存儲以及全文檢索
logstash: 日志加工、“搬運工”
kibana:數據可視化展示。
ELK架構為數據分布式存儲、可視化查詢和日志解析創建了一個功能强大的管理鏈。 三者相互配合,取長補短,共同完成分布式大數據處理工作。

Es的安裝

一、安裝java的jdk

二、下載es版本,解壓,bin路徑下,elastcsearch.bat

image-20210219160950816

三、測試時候安裝成功

他有兩個端口還有一個是9300,9300是做集群交互的端口,9200是外部可以訪問的端口

image-20210217161635207

安裝成功後,可以直接在瀏覽器訪問

image-20210217161701022

四、Kibana(類似於Postman)

4.1Kibana介紹

Kibana是一個開源的分析和可視化平臺,設計用於和Elasticsearch一起工作。

你用Kibana來搜索,查看,並和存儲在Elasticsearch索引中的數據進行交互。

你可以輕松地執行高級數據分析,並且以各種圖標、錶格和地圖的形式可視化數據。

Kibana使得理解大量數據變得很容易。它簡單的、基於瀏覽器的界面使你能够快速創建和共享動態儀錶板,實時顯示Elasticsearch查詢的變化。

Kibana一定要和Es版本對應,這裏使用的是7.5

4.2kibana安裝(postman)

1 客戶端:瀏覽器,postman,kibana,elasticsearch-head(沒有桌面版客戶端)

2 官方提供的
	-Kibana 是一款開源的數據分析和可視化平臺
    -Kibana一定要跟es版本對應,咱們用的都是7.5.0
3 解壓,就可以運行
4 連接es,需要配置
	-修改kibana配置
    # kibana監聽的端口和地址
server.port: 5601
server.host: "127.0.0.1"
server.name: Ne
# 連接哪個es
elasticsearch.hosts: ["http://localhost:9200/"]

image-20210219162016524

運行KIbana

image-20210219163920953

如果部署後出現問題

20200326142600691

image-20210219170516144

一、並且es顯示已經連接上,一般是上一個出現問題,我們需要在進程中,找到node並結束掉

image-20210219170644093

二、斷開es的kibana索引

cmd

curl -XDELETE http://localhost:9200/.kibana*

三、重新啟動kibana

成功

image-20210219170821600

image-20210219170915033

4.3 elasticsearch-head安裝

github

image-20210219171345634

1 第三方開發的一個es客戶端(nodjs開發的,裝node環境),kibana是官方的所以不存在跨域
2 下載,解壓
3 npm install  安裝依賴
4 npm run serve 跑起來

5 會出現跨域,修改es配置
    http.cors.enabled: true
    http.cors.allow-origin: "*"
6 瀏覽器輸入
	http://localhost:9100/

一、當我們跑起來時,

image-20210219172925953

二、現在去Es配置中解决跨域問題

image-20210219173115869

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Bvzx5R9n-1613748063148)(C:\Users\S\AppData\Roaming\Typora\typora-user-images\image-20210219173057034.png)]

重啟ES

三、查看Es-Head

image-20210219173359314

kibana的配置信息

至此兩個都裝完了,Kibana主要做查詢和搜索,兩個都是客戶端,head有一個概覽,儀錶盤,方便查看。kibana沒有

Es安裝官方,第三方插件

推薦用第三種,因為前兩種都比較慢,由於網絡原因,但是我選擇第一種

第一種:命令行

bin/elasticsearch-plugin install [plugin_name]
bin/elasticsearch-plugin install analysis-smartcn  安裝中文分詞器

第二種:url安裝

bin/elasticsearch-plugin install [url]
#bin/elasticsearch-plugin install https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-smartcn/analysis-smartcn-6.4.0.zip

第三種:離線安裝

  1. https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-smartcn/analysis-smartcn-6.4.0.zip
  2. 點擊下載analysis-smartcn離線包
  3. 將離線包解壓到ElasticSearch 安裝目錄下的 plugins 目錄下
  4. 重啟es。新裝插件必須要重啟es
**注意:插件的版本要與 ElasticSearch 版本要一致**

image-20210219174659670

倒排索引

詳細

簡單來說就是根據內容定比特到標題,通過書中的關鍵字,文本信息,定比特到書名,然後返回,只不過其中做了很多優化,比如數據的高可用,切片式複制到從節點等等

1 倒排索引:對文章進行分詞,對每個詞建立索引,由於這樣建,會出現索引爆炸,索引索引跟標題建關系,標題再跟文章建索引,如下:
	分詞---文章建立索引                             |

| 今天(索引)    | (文章1,<210>,2) (文章3,<8>,1)       |
| 星期天(索引) | (文章2,<12,25,100>,3)                 |
| 出去玩(索引) | (文章5,<11,24,89>,3)(文章1,<819>,2) |

今天出現在哪個文章,出現的比特置和出現的次數

索引操作(數據庫操作)

PUT ne
{
  "settings": {
    "index":{
      "number_of_shards":5,  # 索引分片數量,理論上一個能存21E個文檔 5個也就是105E
      "number_of_replicas":1  # 索引副本數量
    }
  }
}
PUT ne2

'''
number_of_shards
每個索引的主分片數,默認值是 5 。這個配置在索引創建後不能修改。
number_of_replicas
每個主分片的副本數,默認值是 1 。對於活動的索引庫,這個配置可以隨時修改。
'''

方式一----head

image-20210219214056929

方式二—kibana

image-20210219214340597

image-20210219215409569

查看

image-20210219214530472

查看索引

# 查看索引
GET ne2/_settings
GET ne/_settings  # 查看指定
GET _all/_settings  # 查看所有

GET ne,ne2/_settings  # 查看ne和ne2的setting配置
GET _settings  # 產看所有

image-20210219215741594

修改索引

修改主要是修改索引的副本,分片不能修改,一般不用,名字也不能改

# 修改索引(一般不太用,只能用來修改副本數量)
#修改索引副本數量為2 分片的數量一開始就要定好
# 副本數量可以改(有可能會出錯)
PUT lqz/_settings
{
    
  "number_of_replicas": 2
}

# 如果出錯 就修改一下配置
PUT  _all/_settings
{
    
"index": {
    
  "blocks": {
    
    "read_only_allow_delete": false  # 索引只允許讀和删
    }
  }
}

删除索引

DELETE ne

image-20210219220415365

也可以在head中删除

image-20210219220501364

映射管理(類型)(錶)

創建映射

索引如果不創建,只有插入文檔,會自動創建

PUT books  # 創建索引books 然後裏面有那麼多字段
{
    
  "mappings": {
    
    "properties":{
    
      "title":{
      # 字段
        "type":"text",  # 類型
        "analyzer": "ik_max_word"  # 用ik做分詞
      },
      "price":{
    
        "type":"integer"
      },
      "addr":{
    
        "type":"keyword"  # 不分詞 直接建立索引
      },
      "company":{
      # 複雜類型 裏面仍存放字典或列錶 
        "properties":{
    
          "name":{
    "type":"text"},
          "company_addr":{
    "type":"text"},
          "employee_count":{
    "type":"integer"}
        }
      },
      "publish_date":{
    "type":"date","format":"yyy-MM-dd"}
      
    }
    
  }
}

# 後續把注釋删掉

image-20210219223616420

查看映射

GET books/_mapping
GET _all/_mapping

image-20210219223749876

特殊說明

索引映射都不存在,也可以插入文檔,也就是說他會自動幫你創建好索引和映射

PUT xxx/_doc/1
{
    
  "title":"白雪公主和十個小矮人",
  "price":"99",
  "addr":"黑暗森裏",
  "publish_date":"2018-05-19",
  "name":"lqz"
}


# 查看索引
GET lqz/_settings
#查看映射
GET lqz/_mapping

image-20210219224402975

修改映射的規則是: 可以添加新字段,已有字段不允許修改。如果說要涉及修改mapping結構的,有兩種解决方案,一種是,新建索引然後進行數據遷移,還有一種是索引映射

文檔基本增删查改(一行一行數據)

插入文檔

PUT books/_doc/1
{
    
  "title":"大頭兒子小偷爸爸",
  "price":100,  
  "addr":"北京天安門",
  "company":{
    
    "name":"我愛北京天安門",
    "company_addr":"我的家在東北松花江傻姑娘",
    "employee_count":10
  },
  "publish_date":"2019-08-19"
}

PUT books/_doc/2
{
    
  "title":"白雪公主和十個小矮人",
  "price":"99", #寫字符串會自動轉換
  "addr":"黑暗森裏",
  "publish_date":"2018-05-19"
}

PUT books/_doc/3
{
    
  "title":"白雪公主和十個小矮人",
  "price":"99", #寫字符串會自動轉換
  "addr":"黑暗森裏",
  "publish_date":"2018-05-19",
   "name":"lqz"
}

image-20210219224815121

數據存放之後,我們可以通過head來查看我們的數據

image-20210219225052934

查詢文檔

GET books/_doc/1

image-20210219225142727

修改文檔

方式一 直接覆蓋

PUT books/_doc/1
{
    
  "title":"三體",
  "price":"99", #寫字符串會自動轉換
  "addr":"china",
  "publish_date":"2018-05-19",
   "name":"lcx"
}

方式二 局部修改

POST books/_doc/1/_update
{
    
  "doc": {
    
    "addr":"china",
    "price":"8888888",  # 會自動進行格式轉化
  }
}

POST books/_update/1  # 推薦使用方法
{
    
  "doc": {
    
    "addr":"china",
    "price":"8888888"
  }
}

删除文檔

DELETE books/_doc/4

文檔查詢–基礎

###查詢字符串
# 查詢from字段是gu的所有人
GET lqz/_doc/_search?q=from:gu
# 查詢age是22的人
GET lqz/_doc/_search?q=age:22

GET lqz/_doc/_search?q=desc:不知道
    
    
    
###結構化查詢

GET lqz/_doc/_search
{
    
  "query": {
    
    "match": {
    
      "from": "gu"
    }
  }
}

GET lqz/_doc/_search
{
    
  "query": {
    
    "match": {
    
      "from":"gu"
    }
  }
}

版權聲明
本文為[A1L__]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201270642528316.html

隨機推薦