国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Elasticsearch基礎(chǔ)學(xué)習(xí)筆記

這篇具有很好參考價值的文章主要介紹了Elasticsearch基礎(chǔ)學(xué)習(xí)筆記。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、全文搜索

1,數(shù)據(jù)分類

2,搜索分類:

3,什么是全文搜索

全文檢索是指:

倒排索引

二、ElasticSearch簡介

1,ElasticSearch是什么

2,ElasticSearch特點:

3,ElasticSearch版本特性:

4,Elastic生態(tài)圈--Elastic Stack介紹

5,ElasticSearch應(yīng)用場景

6,ElasticSearch單機(jī)版部署安裝

1,環(huán)境準(zhǔn)備

2,下載elasticsearch壓縮包(Linux版本)

3,創(chuàng)建es用戶

4,修改參數(shù)

?5,配置主機(jī)名,重啟系統(tǒng)

6,解壓ES安裝包

7,配置Java環(huán)境變量

8,修改目錄所屬屬組

9,修改ElasticSearch的配置文件。

10,切換用戶

11,啟動elasticsearch服務(wù)

12,設(shè)置es安全訪問的密碼

13,驗證

?7,客戶端Kibana部署安裝

1,下載kibana安裝包。

2,解壓kibana tar包至es目錄下

3,設(shè)置kibana-7.13.4-linux-x86_64目錄的所屬用戶和所屬組為es。

4,修改kibana配置文件~

5,啟動kibana服務(wù)并驗證是否啟動成功

三、ElasticSearch使用操作

1,ElasticSearch常用cat API

2,Elasticsearch安裝插件

1,)離線安裝ik分詞器。

2,)在線安裝icu分詞器。

3,)使用分詞器測試分詞效果

?3,Elasticsearch索引操作

4,ElasticSearch基本概念

5,ElasticSearch文檔操作

1,添加文檔

2,修改文檔?

?3,查詢文檔

4,刪除文檔操作?

5,ElasticSearch文檔批量寫入操作

6,ES檢索原理分析

索引的原理

磁盤IO與預(yù)讀

倒排索引

四,Python讀取excel數(shù)據(jù)批量寫入ES文檔數(shù)據(jù)


一、全文搜索

1,數(shù)據(jù)分類

結(jié)構(gòu)化數(shù)據(jù):固定格式,有限長度,比如數(shù)據(jù)庫(MySQL,PostgreSQL)存的數(shù)據(jù)

非結(jié)構(gòu)化數(shù)據(jù):不定長,無固定格式? ? ?比如郵件,word文檔,日志

半結(jié)構(gòu)化數(shù)據(jù):前兩者結(jié)合。比如xml,html網(wǎng)頁

2,搜索分類:

結(jié)構(gòu)化數(shù)據(jù)搜索:使用關(guān)系型數(shù)據(jù)庫

非結(jié)構(gòu)化數(shù)據(jù)搜索:

  • 順序掃描
  • 全文檢索

設(shè)想一個關(guān)于搜索的場景,假設(shè)要搜索一首詩句內(nèi)容中帶有“前”字的古詩

name content author
靜夜思 床前明月光,疑是地上霜,舉頭望明月,低頭思故鄉(xiāng)

李白

望廬山瀑布 日照香爐生紫煙,遙看瀑布掛前川。飛流直下三千尺,疑是銀河落九天 李白
... ... ...

如果使用數(shù)據(jù)庫的SQL來存儲古詩的話,應(yīng)使用這樣的SQL查詢

select name from poems where content like "%前%";

這種使用SQL查詢的方式稱為順序掃描法,需要遍歷所有的記錄進(jìn)行匹配,不但效率低,而且不符合我們搜索時的期望數(shù)據(jù)~

所以,采用es的全文檢索的方式,可以大幅提升我們搜索數(shù)據(jù)的效率~

3,什么是全文搜索

全文檢索是指:

  • 通過一個程序掃描文本中的每一個單詞,針對單詞建立索引,并保存該單詞在文本中的位置,以及出現(xiàn)的次數(shù)

  • 用戶查詢時,通過之前建立好的索引來查詢,將索引中單詞對應(yīng)的文本位置,出現(xiàn)的次數(shù)返回給用戶,因為有了具體文本的位置,所以就可以將具體內(nèi)容讀取出來了

示例:csdn搜索關(guān)鍵詞查找對應(yīng)信息

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

如上圖,如果使用SQL的模糊匹配,則搜索結(jié)果對應(yīng)應(yīng)該是包含“nightingale部署使用”這個關(guān)鍵字的信息才會被匹配出來。

而根據(jù)上圖搜索匹配出來的結(jié)果看,顯然不是通過模糊匹配來搜索的。首先根據(jù)搜索出來的結(jié)果看,此搜索操作是被分詞后的了,所以無論是匹配到nightingale部署,還是匹配到nightingale使用等其他一些關(guān)鍵詞,都會匹配搜索出結(jié)果來。包括文章中出現(xiàn)對應(yīng)分詞的信息,也會被高亮顯示出來~

簡單理解搜索步驟原理主要概況為以下幾個步驟:

  • 內(nèi)容爬取,停頓詞過濾比如一些無用的像“的”,“了” 之類的語氣詞/連接詞

  • 內(nèi)容分詞,提取關(guān)鍵詞

  • 根據(jù)關(guān)鍵詞建立倒排索引

  • 用戶輸入關(guān)鍵詞進(jìn)行搜索

倒排索引

索引就類似于目錄,平時我們使用的索引,都是通過主鍵定位到某條數(shù)據(jù),那么倒排索引,剛好相反,數(shù)據(jù)對應(yīng)到主鍵

示例圖:

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎這里以一個博客文章的內(nèi)容舉例,來查看正排索引和倒排索引的區(qū)別~

正排索引(正向索引)

文章ID 文章標(biāo)題 文章內(nèi)容
1 淺析JAVA設(shè)計模式 JAVA設(shè)計模式是每一個JAVA程序員都應(yīng)該掌握的進(jìn)階知識
2 JAVA多線程設(shè)計模式 JAVA多線程與設(shè)計模式結(jié)合

如上表格,正排索引可以根據(jù)主鍵id對應(yīng)查詢文章標(biāo)題和文章內(nèi)容

倒排索引(反向索引)

關(guān)鍵詞 文章ID
JAVA 1,2
設(shè)計模式 1,2
多線程

假如,我們有一個站內(nèi)搜索的功能,通過某個關(guān)鍵詞來搜索相關(guān)的文章,那么這個關(guān)鍵詞可能出現(xiàn)在標(biāo)題中,也可能出現(xiàn)在文章內(nèi)容中,那我們將會在創(chuàng)建或修改文章的時候,建立一個關(guān)鍵詞與文章的對應(yīng)關(guān)系表,這種,我們可以稱之為倒排索引。

總結(jié):

  • 倒排索引:是數(shù)據(jù)關(guān)鍵詞對應(yīng)主鍵

  • 正排索引:主鍵對應(yīng)具體數(shù)據(jù)

二、ElasticSearch簡介

1,ElasticSearch是什么

ElasticSearch(簡稱ES)是一個分布式、RESTful風(fēng)格的搜索和數(shù)據(jù)分析引擎,是用Java開發(fā)并開源的企業(yè)級搜索引擎,能夠達(dá)到近實時搜索,穩(wěn)定,可靠,快速,安裝使用方便。

客戶端Java、.NET(c#)、PHP、Python、Ruby等多種語言。

官方網(wǎng)站:Elasticsearch Platform — Find real-time answers at scale | Elastic

下載地址:Download Elasticsearch | Elastic

2,ElasticSearch特點:

  • 支持分布式,可水平擴(kuò)展

  • 降低全文檢索的學(xué)習(xí)曲線,可以被任何編程語言調(diào)用

  • 分片與副本機(jī)制,直接解決了集群下性能與高可用問題。

3,ElasticSearch版本特性:

5.x新特性:

  • 默認(rèn)打分機(jī)制從TF-IDF改為BM25

  • 內(nèi)部引擎移除了避免同一文檔并發(fā)更新的競爭鎖,帶來15%~20%的性能提升

  • Instant aggregation支持分片,上聚合的緩存

  • 新增了Profile API

6.x新特性:

  • 跨集群復(fù)制(CCR)

  • 索引生命周期管理

  • SQL的支持

  • 更友好的升級和數(shù)據(jù)遷移

    • 在主要版本之間的遷移更為簡化;

    • 全新的基于操作的數(shù)據(jù)復(fù)制框架,可加快恢復(fù)數(shù)據(jù);

  • 性能優(yōu)化

    • 有效存儲稀疏字段的新方法,降低了存儲成本

    • 在索引時進(jìn)行排序,可加快排序的查詢性能

7.x新特性:

重大改進(jìn):正式廢除單個索引下多Type的支持

7.1開始,Security功能免費使用

ECK-Elasticsearch Operator on kubernetes

新功能

  • New Cluster coordination

  • Feature--Complete High Level REST Client

  • Script Score Query

性能優(yōu)化

  • 默認(rèn)的Primary Shard數(shù)從5改為1,避免Over Sharding

  • 性能優(yōu)化,更快的Top K

8.x新特性:

  • Rest API相比較7.x而言做了比較大的改動(比如徹底刪除type)

  • 默認(rèn)開啟安全配置

  • 存儲空間優(yōu)化:對倒排文件使用新的編碼集,對于keyword、match_only_text類型字段有效,有3.5%的空間優(yōu)化提升,對于新建索引和segment自動生效

  • 優(yōu)化geo_point,geo_shape類型的索引(寫入)效率:15%的提升

  • 技術(shù)預(yù)覽版KNN API發(fā)布,(K鄰近算法),跟推薦系統(tǒng)、自然語言排名相關(guān)。

4,Elastic生態(tài)圈--Elastic Stack介紹

首先,我們經(jīng)常說的日志搜集分析系統(tǒng)ELK系統(tǒng)分別是Elasticsearch,Logstash,Kibana三款軟件的簡稱,在發(fā)展的過程中又有新的成員Beats的加入,就形成了Elastic Stack。

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

?指標(biāo)分析/日志分析

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

  • 利用Java程序或beats搜集各種中間件、或Java程序的日志;

  • 將搜集到的日志數(shù)據(jù)寫入到redis、或kafka、rabbitmq等各種mq消息隊列中;

  • 利用logstash對收集到的日志做過濾(數(shù)據(jù)分析,將主要報錯或一些重要字段數(shù)據(jù)取出),并將數(shù)據(jù)轉(zhuǎn)為json格式;

  • logstash將數(shù)據(jù)處理完成后,將數(shù)據(jù)持久化存儲到elasticsearch中;

  • 最后,使用可視化工具kibana或Grafana將數(shù)據(jù)可視化展示;

  • 另外,可以配置使用nginx做一些安全策略(如限制ip訪問等~)

5,ElasticSearch應(yīng)用場景

  • 站內(nèi)搜索

  • 日志管理和分析

  • 大數(shù)據(jù)分析

  • 應(yīng)用性能監(jiān)控

  • 機(jī)器學(xué)習(xí)

6,ElasticSearch單機(jī)版部署安裝

1,環(huán)境準(zhǔn)備

  • 操作系統(tǒng):CentOS7.6

  • CPU:1核1G

  • 內(nèi)存:4G

  • 軟件版本:elasticsearch-7.13.4

注意:不同版本的es所需環(huán)境不同,es5需要安裝java環(huán)境,需要jdk8以上的版本;

es從6.5開始支持java11,es從7.0開始,內(nèi)置了java環(huán)境 ~~~

2,下載elasticsearch壓縮包(Linux版本)

[root@ecs-69416390 ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.4-linux-x86_64.tar.gz

3,創(chuàng)建es用戶

在Linux中添加一個普通用戶:es 【目前ES不支持root用戶啟動】

[root@ecs-69416390 ~]# useradd -d /es -m es    #創(chuàng)建es用戶并生成es用戶的家目錄
[root@ecs-69416390 ~]# passwd es              #設(shè)置es用戶的登錄密碼

4,修改參數(shù)

修改Linux中最大文件描述符以及最大虛擬內(nèi)存的參數(shù)。

因為ES對Linux的最大文件描述符以及最大虛擬內(nèi)存有一定要求,所以需要修改。否則ES無法正常啟動。

[root@localhost ~]# vi /etc/security/limits.conf
*                soft    nofile          65536
*                hard    nofile          131072
*                soft    nproc           2048
*                hard    nproc           4096

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

?修改最大虛擬內(nèi)存

[root@localhost ~]# vi /etc/sysctl.conf
vm.max_map_count=262144

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

?5,配置主機(jī)名,重啟系統(tǒng)

配置主機(jī)名,重啟Linux系統(tǒng)。

前面修改的Linux的一些系統(tǒng)參數(shù)需要重啟系統(tǒng)后才會生效。

[root@localhost ~]# hostnamectl set-hostname elasticsearch01
[root@elasticsearch01 ~]# vi /etc/hosts
...
... 
192.168.48.201  elasticsearch01
[root@localhost ~]# reboot -h now

6,解壓ES安裝包

解壓ES安裝包到es用戶的家目錄下面。

[root@localhost ~]# tar -zxvf elasticsearch-7.13.4-linux-x86_64.tar.gz
[root@localhost ~]# mv elasticsearch-7.13.4/ /es/

7,配置Java環(huán)境變量

在profile文件中配置ES_JAVA_HOME環(huán)境變量,指向ES中內(nèi)置的JDK。

[root@localhost ~]# vi /etc/profile
...
export ES_JAVA_HOME=/es/elasticsearch-7.13.4/jdk/
export PATH=$PATH:$ES_JAVA_HOME/bin
...
[root@localhost ~]# source /etc/profile

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

8,修改目錄所屬屬組

修改elasticsearch-7.13.4目錄所屬的屬組。

因為前面是使用root用戶解壓的,elasticsearch-7.13.4目錄下的文件es用戶是沒有權(quán)限的。

[root@localhost ~]# chown -R es:es /es/elasticsearch-7.13.4/

9,修改ElasticSearch的配置文件。

[root@localhost ~]# vi /es/elasticsearch-7.13.4/config/elasticsearch.yml
...
# ---------------------------------- Cluster -----------------------------------
...
cluster.name: comment-es
# 集群名稱
...
# ------------------------------------ Node ------------------------------------
...
node.name: node-1
# 節(jié)點名稱
...
# ---------------------------------- Network -----------------------------------
network.host: 192.168.26.10
# 為ES設(shè)置綁定的IP
http.port: 9200
# 為ES服務(wù)設(shè)置監(jiān)聽的端口
...
# --------------------------------- Discovery ----------------------------------
cluster.initial_master_nodes: ["node-1"]
# 初始化具備主節(jié)點資格的節(jié)點,在選擇主節(jié)點時,會優(yōu)先在這一批列表中進(jìn)行選擇
...
# ---------------------------------- Various -----------------------------------
...
xpack.security.enabled: true    #開啟安全策略
xpack.security.transport.ssl.enabled: true  #開啟安全策略

10,切換用戶

切換到es用戶

[root@localhost ~]# su es

11,啟動elasticsearch服務(wù)

(1.)前臺啟動ES服務(wù)

[es@elasticsearch01 elasticsearch-7.13.4]$ bin/elasticsearch

(2.)后臺啟動ES服務(wù)

在實際生產(chǎn)環(huán)境中,需要將ES放到后臺運行。

[es@elasticsearch01 elasticsearch-7.13.4]$ bin/elasticsearch -d

12,設(shè)置es安全訪問的密碼

此處密碼設(shè)置均自定義設(shè)置,即執(zhí)行命令后根據(jù)提示輸入密碼即可。

[es@elasticsearch01 elasticsearch-7.13.4]$ ./bin/elasticsearch-setup-passwords interactive

Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y


Enter password for [elastic]: 
Reenter password for [elastic]: 
Enter password for [apm_system]: 
Reenter password for [apm_system]: 
Enter password for [kibana_system]: 
Reenter password for [kibana_system]: 
Enter password for [logstash_system]: 
Reenter password for [logstash_system]: 
Enter password for [beats_system]: 
Reenter password for [beats_system]: 
Enter password for [remote_monitoring_user]: 
Reenter password for [remote_monitoring_user]: 
Changed password for user [apm_system]
Changed password for user [kibana_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

13,驗證

驗證ES服務(wù)。

通過jps命令或者jcmd命令驗證進(jìn)程是否存在。

[es@elasticsearch01 elasticsearch-7.13.4]$ jps
1314 Elasticsearch
8786 Jps
[es@elasticsearch01 elasticsearch-7.13.4]$ jcmd 
8800 jdk.jcmd/sun.tools.jcmd.JCmd
1314 org.elasticsearch.bootstrap.Elasticsearch

通過web界面訪問驗證是否可以正常訪問。

http://192.168.26.10:9200/

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

到此,ElasticSearch部署完成 ~~~

?7,客戶端Kibana部署安裝

Kibana是一個開源分析和可視化平臺,旨在與ElasticSearch協(xié)同工作。

1,下載kibana安裝包。

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.13.4-linux-x86_64.tar.gz
# 注意:安裝的kibana客戶端的版本必須和elasticsearch的版本完全一致~
# 官網(wǎng)下載慢可以使用華為云鏡像下載:https://mirrors.huaweicloud.com/home

2,解壓kibana tar包至es目錄下

[root@elasticsearch01 ~]# tar -zxvf kibana-7.13.4-linux-x86_64.tar.gz -C /es/

3,設(shè)置kibana-7.13.4-linux-x86_64目錄的所屬用戶和所屬組為es。

[root@elasticsearch01 es]# chown -R es:es kibana-7.13.4-linux-x86_64/

4,修改kibana配置文件~

[root@elasticsearch01 kibana-7.13.4-linux-x86_64]# vi config/kibana.yml
...
server.port: 5601
# kibana服務(wù)端口
...
server.host: "192.168.26.10"
...
elasticsearch.hosts: ["http://192.168.26.10:9200"]
...
elasticsearch.username: "elastic"    #此處為明文配置的es密碼
elasticsearch.password: "自定義的elastic密碼"
...
xpack.reporting.encryptionKey: "a_random_string"    
xpack.security.encryptionKey: "something_at_least_32_characters"
...
i18n.locale: "zh-CN"

5,啟動kibana服務(wù)并驗證是否啟動成功

[es@elasticsearch01 kibana-7.13.4-linux-x86_64]$ nohup ./bin/kibana &
[root@elasticsearch01 kibana-7.13.4-linux-x86_64]# netstat -uptln |grep 5601
tcp        0      0 192.168.26.10:5601     0.0.0.0:*               LISTEN      18982/node

通過瀏覽器訪問 http://192.168.26.10:5601/login?next=%2F 驗證kibana服務(wù)

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

?輸入用戶名密碼:elastic,elastic

三、ElasticSearch使用操作

1,ElasticSearch常用cat API

/_cat/allocation   # 查看單節(jié)點的$hard分配整體情況
/_cat/shards       # 查看各shard的詳細(xì)情況
/_cat/shards/{index}   # 查看指定分片的詳細(xì)情況
# 示例:GET /_cat/shards/.kibana-event-log-7.13.4-000001
/_cat/master      # 查看master節(jié)點信息
/_cat/nodes		  # 查看所有節(jié)點信息
/_cat/indices		# 查看集群中所有index的詳細(xì)信息
/_cat/indices/{index}  # 查看集群中指定index的詳細(xì)信息
# 示例:GET /_cat/indices/.tasks
/_cat/segments  # 查看各index的segment詳細(xì)信息,包括segment名,所屬shard,內(nèi)存(磁盤)占用大小等
/_cat/segments/{index} # 查看指定index的segment詳細(xì)信息
/_cat/count   # 查看當(dāng)前集群的doc數(shù)量
/_cat/count/{index} # 查看指定索引的doc數(shù)量
/_cat/recovery  # 查看集群內(nèi)每個shard的recovery過程,調(diào)整replica。
/_cat/recovery/{index} # 查看指定索引$hard的recovery過程
/_cat/health   # 查看集群當(dāng)前狀態(tài):紅、黃、綠
/_cat/pending_tasks	 # 查看當(dāng)前集群的pending task
/_cat/aliases			# 查看集群中所有alias信息,路由配置等
/_cat/aliases/{alias}	# 查看指定索引的alias信息
/_cat/thread_pool 		# 查看集群各節(jié)點內(nèi)部不同類型的threadpool的統(tǒng)計信息
/_cat/plugins			# 查看集群各個節(jié)點上的plugin信息
/_cat/fielddata			# 查看當(dāng)前集群各個節(jié)點的fielddata內(nèi)存使用情況
/_cat/fielddata/{fields}	# 查看指定field的內(nèi)存使用情況
/_cat/nodeattrs			# 查看單節(jié)點的自定義屬性
/_cat/repositories		# 輸出集群中組測快照存儲庫
/_cat/templates			# 輸出當(dāng)前正在存在的模板信息

2,Elasticsearch安裝插件

安裝分詞器插件,這里安裝ik分詞器插件和icu分詞器插件。

1,)離線安裝ik分詞器。

本地下載相應(yīng)的插件,解壓。然后手動上傳到elasticsearch的plugins目錄,然后重啟ES示例就可以了

比如安裝ik中文分詞插件:GitHub - medcl/elasticsearch-analysis-ik: The IK Analysis plugin integrates Lucene IK analyzer into elasticsearch, support customized dictionary.

[root@elasticsearch01 ~]# cd /es/elasticsearch-7.13.4/plugins/
[root@elasticsearch01 plugins]# mkdir ik && cd ik
[root@elasticsearch01 plugins]# unzip elasticsearch-analysis-ik-7.13.4.zip
[root@elasticsearch01 plugins]# rm -rf elasticsearch-analysis-ik-7.13.4.zip

2,)在線安裝icu分詞器。

# 查看已安裝插件
[es@elasticsearch01 elasticsearch-7.13.4]$ bin/elasticsearch-plugin list
# 安裝插件
[es@elasticsearch01 elasticsearch-7.13.4]$ bin/elasticsearch-plugin install analysis-icu
# 刪除插件
[es@elasticsearch01 elasticsearch-7.13.4]$ bin/elasticsearch-plugin remove analysis-icu

注意:安裝和刪除完插件后,需要重啟ES服務(wù)才能生效。

# 殺掉es進(jìn)程
[es@elasticsearch01 elasticsearch-7.13.4]$ kill 9387
# 重啟es服務(wù)
[es@elasticsearch01 elasticsearch-7.13.4]$ ./bin/elasticsearch -d

3,)使用分詞器測試分詞效果

icu分詞效果

POST _analyze
{
  "analyzer": "icu_analyzer",
  "text": "中華人民共和國"
}

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

?ik分詞效果

# 按最大詞組分詞
POST _analyze
{
  "analyzer": "ik_max_word",
  "text": "中華人民共和國"
}

# 按最少詞組分詞
POST _analyze
{
  "analyzer": "ik_smart"
  , "text": "中華人民共和國"
}

最大分詞:

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

最少分詞

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

?3,Elasticsearch索引操作

官網(wǎng)文檔地址:[Elasticsearch Guide 7.13] | Elastic

創(chuàng)建索引

索引命名必須小寫,不能以下劃線開頭

格式:PUT /索引名稱

# 創(chuàng)建索引
PUT /es_db
# 創(chuàng)建成功后返回:
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "es_db"
}

# 創(chuàng)建索引時可以設(shè)置分片數(shù)和副本數(shù)
# 如果有多個elasticsearch節(jié)點,可以設(shè)置多個分片,比如如果有3個節(jié)點,可以指定設(shè)置3個分片,將索引數(shù)據(jù)分成3分放到3個節(jié)點上。
PUT /es_db
{
	"settings" : {
		"number_of_shards" : 3,
		"number_of_replicas" : 2
	}
}

# 修改索引配置
PUT /es_db/_settings
{
	"index" : {
		"number_of_replicas" : 1
	}
}

查詢索引

格式:GET /索引名稱

# 查詢索引
GET /es_db
# 查詢后輸出一些信息:
{
  "es_db" : {
    "aliases" : { },    # 索引別名
    "mappings" : { },   # 映射,索引有數(shù)據(jù)之后 會存放數(shù)據(jù)類型~
    "settings" : {		# 設(shè)置
      "index" : {
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        },
        "number_of_shards" : "1",		# 索引分片
        "provided_name" : "es_db",		# 索引名稱
        "creation_date" : "1680163838332",	# 創(chuàng)建時間
        "number_of_replicas" : "1",		# 副本
        "uuid" : "tfWi352WT9WvvhriwslZqA",
        "version" : {
          "created" : "7130499"
        }
      }
    }
  }
}

# es_db索引是否存在
HEAD /es_db

刪除索引

格式:DELETE /索引名稱

DELETE /es_db

4,ElasticSearch基本概念

ElasticSearch與傳統(tǒng)關(guān)系型數(shù)據(jù)庫的區(qū)別:

  • Elasticsearch Schemaless /相關(guān)性/高性能全文檢索

  • RDMS 事務(wù)性 / join?

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

索引(Index)

一個索引就是一個擁有相似特征的文檔的集合。一個索引由一個名字來標(biāo)識(必須全部是小寫字母),并且當(dāng)我們要對對應(yīng)這個索引中的文檔進(jìn)行索引、搜索、更新和刪除的時候,都要使用到這個名字。

{
  "es_db" : {
    "aliases" : { },    # 索引別名
    "mappings" : { },   # 映射,索引有數(shù)據(jù)之后 會存放數(shù)據(jù)類型~
    "settings" : {		# 設(shè)置
      "index" : {
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        },
        "number_of_shards" : "1",		# 索引分片
        "provided_name" : "es_db",		# 索引名稱
        "creation_date" : "1680163838332",	# 創(chuàng)建時間
        "number_of_replicas" : "1",		# 副本
        "uuid" : "tfWi352WT9WvvhriwslZqA",
        "version" : {
          "created" : "7130499"
        }
      }
    }
  }
}

文檔(Document)

  • Elasticsearch是面向文檔的,文檔是所有可搜索數(shù)據(jù)的最小單位。

    • 日志文件中的日志項

    • 一部電影的具體信息/一張唱片的詳細(xì)信息

    • MP3播放器里的一首歌/一篇PDF文檔中的具體內(nèi)容

  • 文檔會被序列化成JSON格式,保存在Elasticsearch中

    • JSON對象由字段組成

    • 每個字段都有對應(yīng)的字段類型(字符串/數(shù)值/布爾/日期/二進(jìn)制/范圍類型)

  • 每個文檔都有一個Unique ID

    • 可以自己指定ID或者通過Elasticsearch自動生成

  • 一篇文檔包含了一系列字段,類似數(shù)據(jù)庫表中的一條記錄

  • JSON文檔,格式靈活,不需要預(yù)先定義格式

    • 字段的類型可以指定或者通過Elasticsearch自動推算

    • 支持?jǐn)?shù)組/支持嵌套

文檔元數(shù)據(jù)

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

元數(shù)據(jù),用于標(biāo)注文檔的相關(guān)信息:

_index:文檔所屬的索引名

_type:文檔所屬的類型名

_id:文檔唯一id

_source:文檔的原始json數(shù)據(jù)

version:文檔的版本號,修改刪除操作version都會自增

seq_no:和version一樣,一旦數(shù)據(jù)發(fā)生更改,數(shù)據(jù)也一直是累計的。Shard級別嚴(yán)格遞增,保證后寫入的Doc的seq_no大于先寫入的Doc的seq_no。

primory_term:primory_term主要是用來恢復(fù)數(shù)據(jù)時處理當(dāng)多個文檔的seq_no一樣時的沖突,避免Primary Shard上的寫入被覆蓋。每當(dāng)Primary Shard發(fā)生重新分配時,比如重啟,Primary選舉等,_primory_term會遞增1。

5,ElasticSearch文檔操作

1,添加文檔

  • 格式:[PUT | POST /索引名稱/[_doc | _create ]/id
# 創(chuàng)建文檔,指定id
# 如果id不存在,創(chuàng)建新的文檔,否則先刪除現(xiàn)有文檔,再創(chuàng)建新的文檔,版本會增加

PUT /es_db/_doc/1
{
  "name":"張三",
  "sex":1,
  "age":25,
  "address":"廣州天河公園",
  "remark":"java developer"
}

# 輸出:
{
  "_index" : "es_db",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}
# PUT方式創(chuàng)建文檔,它底層會根據(jù)id查看這條數(shù)據(jù)是否存在,如果存在則會刪除這條文檔,再新增(類似于全量更新操作),比如下面示例,將id為1的文檔修改。
PUT /es_db/_doc/1
{
  "name":"張三xxx",
  "address":"廣州天河公園",
  "remark":"java developer"
}

# 輸出:可以看出此時version版本為2,result為update
{
  "_index" : "es_db",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 2,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 1,
  "_primary_term" : 1
}

# 查看新增的這條文檔數(shù)據(jù):
GET /es_db/_doc/1
# 輸出:
{
  "_index" : "es_db",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 2,
  "_seq_no" : 1,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "name" : "張三xxx",
    "address" : "廣州天河公園",
    "remark" : "java developer"
  }
}

# 使用POST創(chuàng)建文檔,ES自動生成id
POST /es_db/_doc
{
  "name":"張三",
  "sex":1,
  "age":25,
  "address":"廣州天河公園",
  "remark":"java developer"
}

# 使用POST修改文檔

POST /es_db/_doc/FuGtNYgBnLz27AmKfPQf
{
  "name":"李四xxx",
  "sex":1,
  "age":26,
  "address":"深圳金沙灣公園",
  "remark":"java developer"
}

# 輸出:
{
  "_index" : "es_db",
  "_type" : "_doc",
  "_id" : "FuGtNYgBnLz27AmKfPQf",
  "_version" : 2,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 4,
  "_primary_term" : 1
}

總結(jié):POST和PUT都能起到創(chuàng)建/更新的作用,PUT需要對一個具體的資源進(jìn)行操作也就是要確定id才能進(jìn)行更新/創(chuàng)建;而POST是可以針對整個資源集合進(jìn)行操作的,如果不寫id就有ES生成一個唯一id進(jìn)行創(chuàng)建新文檔,如果填了id那就針對這個id的文檔進(jìn)行創(chuàng)建/更新

注意:語法中的_create語法,如果ID已經(jīng)存在,再使用create創(chuàng)建就會失敗。

一般_create語法用于多線程并發(fā)場景。

# 例如:針對es_db索引中id為1的文檔做新增操作。
POST /es_db/_create/1
{
  "name":"李四xxx",
  "address":"廣州天河公園",
  "remark":"java developer"
}

接口報錯:提示該文檔已存在

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

2,修改文檔?

  • 全量更新,整個json都會替換,格式:[PUT | POST]/索引名稱/_doc/id

如果文檔存在,現(xiàn)有文檔會被刪除,新的文檔會被索引

# 全量更新,替換整個json
PUT /es_db/_doc/1/
{
"name":"張三",
"sex":1,
"age":25
}

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

  • 使用update部分更新,格式:POST /索引名稱/update/id

update不會刪除原來的文檔,而是實現(xiàn)真正的數(shù)據(jù)更新

# 部分更新:在原有文檔上更新
# Update - 文檔必須已經(jīng)存在,更新只會對相應(yīng)字段做增量修改
POST /es_db/_update/1
{"doc": {
  "age":26,
  "address":"北京工人體育廣場"
  }
}

# 查看索引文檔
GET /es_db/_doc/1
# 輸出:
{
  "_index" : "es_db",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 5,
  "_seq_no" : 7,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "name" : "張三",
    "sex" : 1,
    "age" : 26,
    "address" : "北京工人體育廣場"
  }
}
  • ?使用_update_by_query更新文檔
POST /es_db/_update_by_query
{
  "query": {
    "match": {
      "_id": "FuGtNYgBnLz27AmKfPQf"
    }
  },
  "script": {
    "source": "ctx._source.age = 30",
    "lang": "painless"
  }
}

根據(jù)id查看對應(yīng)文檔,age字段已更改

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

修改指定索引的name字段

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎?3,查詢文檔

  • ?根據(jù)id查詢文檔,格式:GET /索引名稱/_doc/id
GET /es_db/_doc/1  # 查詢索引為1的文檔數(shù)據(jù)
  • 條件查詢search,格式:GET /索引名稱/doc/_search,默認(rèn)查詢前10條文檔
# 查詢前10條文檔
GET /es_db/_doc/_search

ES Search API 提供了兩種條件查詢搜索方式:

  • REST風(fēng)格的請求URI,直接將參數(shù)帶過去

  • 封裝到request body中,這種方式可以定義更加易讀的JSON格式

# search條件查詢
1,)term精確查找文檔數(shù)據(jù)
GET /es_db/_search
{
  "query": {
    "term": {
      "name": {
        "value": "張三" # 查詢name字段是張三的索引文檔
      }
    }
  }
}

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

# 使用match查詢address中有工人體育的索引文檔
GET /es_db/_search
{
  "query": {
    "match": {
      "address": "工人體育"      
    }
  }
}

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

?常用search條件查詢

# 通過URI搜索,使用"q"指定查詢字符串,"query string syntax" KV鍵值對

# 條件查詢,如果查詢age等于25歲的 _search?q=*:***
GET /es_db/_search?q=age:25

# 范圍查詢,如果查詢的age在25歲至27歲之間的,_search?q=***[** TO **] 注意:TO 必須為大寫
GET /es_db/_search?q=age[25 TO 27]

# 查詢年齡小于等于27歲的 :<=
GET /es_db/_search?q=age:<=27
# 查詢年齡大于27歲的 :>
GET /es_db/_search?q=age:>27

# 分頁查詢 from=*&size=*
GET /es_db/_search?q=age[25 TO 28]&from=0&size=1  # 從第一頁(索引0)開始,每頁展示1條數(shù)據(jù)

# 對查詢結(jié)果只輸出某些字段 _source=字段,字段
GET /es_db/_search?_source=name,age,remark  # 只查詢名稱,年齡,職業(yè)

# 對查詢結(jié)果排序 sort=字段:desc/asc
GET /es_db/_doc/_search?sort=age:desc
  • ES Search API 提供了SQL查詢方式,可以使用SQL條件匹配查詢數(shù)據(jù)。
# SQL 方式查詢文檔,注意后面不能帶; 
POST _sql?format=json
{
  "query": """
  SELECT * FROM "es_db" where name = '王五'
  """
}

輸出結(jié)果:

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

4,刪除文檔操作?

格式:DELETE /索引名稱/_doc/id

DELETE /es_db/_doc/F-G4NYgBnLz27AmKVPS4

5,ElasticSearch文檔批量寫入操作

批量對文檔進(jìn)行寫操作是通過_bulk的API來實現(xiàn)的

  • 請求方式:POST

  • 請求地址:_bulk

  • 請求參數(shù):通過_bulk操作文檔,一般至少有兩行參數(shù)(或偶數(shù)行參數(shù))

    • 第一行參數(shù)為指定操作的類型及操作的對象(index,type和id)

    • 第二行參數(shù)才是操作的數(shù)據(jù)

參數(shù)格式類似于:

{"actionName":{"_index":"indexName","_type":"typeName","_id":"id"}}
{"field1":"value1","field2":"value2"}
  • actionName:表示操作類型,主要有create,index,delete和update

批量創(chuàng)建文檔create

POST _bulk
{"create":{"_index":"user_db","_type":"_doc","_id":1}}
{"id":1,"city":"哈爾濱","temperture":"25攝氏度"}
{"create":{"_index":"user_db","_type":"_doc","_id":2}}
{"id":2,"city":"長春","temperture":"26攝氏度"}
{"create":{"_index":"user_db","_type":"_doc","_id":3}}
{"id":3,"city":"沈陽","temperture":"27攝氏度"}
{"create":{"_index":"user_db","_type":"_doc","_id":5}}
{"id":5,"city":"大連","temperture":"27攝氏度"}

普通創(chuàng)建或全量替換index

POST _bulk
{"index":{"_index":"user_db","_type":"_doc","_id":1}}
{"id":1,"city":"哈爾濱","temperture":"25攝氏度"}
{"index":{"_index":"user_db","_type":"_doc","_id":2}}
{"id":2,"city":"長春","temperture":"26攝氏度"}
{"index":{"_index":"user_db","_type":"_doc","_id":3}}
{"id":3,"city":"沈陽","temperture":"27攝氏度"}
{"index":{"_index":"user_db","_type":"_doc","_id":5}}
{"id":5,"city":"大連","temperture":"27攝氏度"}
  • 如果原文檔不存在,則是創(chuàng)建

  • 如果原文的存在,則是替換(全量修改原文檔)

批量刪除delete

POST _bulk
{"delete":{"_index":"user_db","_type":"_doc","_id":3}}
{"delete":{"_index":"user_db","_type":"_doc","_id":4}}

# 將索引為3和索引為4的文檔數(shù)據(jù)刪除

批量修改update

POST _bulk
{"update":{"_index":"user_db","_type":"_doc","_id":1}}
{"doc":{"temperture":"30攝氏度"}}
{"update":{"_index":"user_db","_type":"_doc","_id":2}}
{"doc":{"temperture":"31攝氏度"}}
{"update":{"_index":"user_db","_type":"_doc","_id":3}}
{"doc":{"temperture":"32攝氏度"}}
{"update":{"_index":"user_db","_type":"_doc","_id":5}}
{"doc":{"temperture":"33攝氏度"}}

組合應(yīng)用

POST _bulk
{"delete":{"_index":"user_db","_type":"_doc","_id":"EuGSNYgBnLz27AmKKPT_"}} 
{"index":{"_index":"user_db","_type":"_doc","_id":4}}
{"id":6,"city":"昆明","temperture":"34攝氏度"}
{"update":{"_index":"user_db","_type":"_doc","_id":5}}
{"doc":{"temperture":"33攝氏度"}}

# 先刪除索引為EuGSNYgBnLz27AmKKPT_的文檔數(shù)據(jù),然后創(chuàng)建索引為4的文檔數(shù)據(jù),然后更新索引為5的文檔中的temperture字段

批量讀取

GET _mget
{"docs":[{"_index":"es_db","_id":1},{"_index":"user_db","_id":1}]}

# 可以通過id批量獲取es_db的數(shù)據(jù)
GET /es_db/_mget
{
"ids":["1","2","3","4"]
}

6,ES檢索原理分析

索引的原理

索引是加速數(shù)據(jù)查詢的重要手段,其核心原理是通過不斷的縮小想要獲取數(shù)據(jù)的范圍來篩選出最終想要的結(jié)果,同時把隨機(jī)的事件變成順序的事件。

磁盤IO與預(yù)讀

磁盤IO是程序設(shè)計中非常高昂的操作,也是影響程序性能的重要因素,因此應(yīng)當(dāng)盡量避免過多的磁盤IO,有效的利用內(nèi)存可以大大的提升程序的性能。在操作系統(tǒng)層面,發(fā)生一次IO時,不光把當(dāng)前磁盤地址的數(shù)據(jù),而是把相鄰的數(shù)據(jù)也都讀取到內(nèi)存緩沖區(qū)內(nèi),局部預(yù)讀性原理告訴我們,當(dāng)計算機(jī)訪問一個地址的數(shù)據(jù)時,與其相鄰的數(shù)據(jù)也會很快被訪問到。每一次IO讀取的數(shù)據(jù)我們稱之為一頁(page)。具體一頁有多大數(shù)據(jù)跟操作系統(tǒng)有關(guān),一般為4k或8k,也就是我們讀取一頁內(nèi)的數(shù)據(jù)時,實際上才發(fā)生了一次IO,這個理論對于索引的數(shù)據(jù)結(jié)構(gòu)設(shè)計非常有幫助。

倒排索引

當(dāng)數(shù)據(jù)寫入ES時,數(shù)據(jù)將會通過 分詞 被切分為不同的term,ESterm與其對應(yīng)的文檔列表建立一種映射關(guān)系,這種結(jié)構(gòu)就是 倒排索引。如下圖所示:

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

?為了進(jìn)一步提升索引的效率,ES在term的基礎(chǔ)上利用term的前綴或者后綴構(gòu)建了term index,用于對term本身進(jìn)行索引,ES實際的索引結(jié)構(gòu)如下圖所示:

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

這樣當(dāng)我們?nèi)ニ阉髂硞€關(guān)鍵詞時,ES首先根據(jù)它的前綴或者后綴迅速縮小關(guān)鍵詞在term dictionary 中的范圍,大大減少了磁盤IO的次數(shù)。

  • 單詞詞典(Term Dictionary):記錄所有文檔的單詞,記錄單詞到倒排列表的關(guān)聯(lián)關(guān)系

  • 倒排列表(Posting List):記錄了單詞對應(yīng)的文檔結(jié)合,由倒排索引項組成

  • 倒排索引項(Posting):

    • 文檔ID

    • 詞頻TF:該單詞在文檔中出現(xiàn)的次數(shù),用于相關(guān)性評分

    • 位置(Position):單詞在文檔中分詞的位置,用于短語搜索(match phrase query)

    • 偏移(Offset):記錄單詞的開始結(jié)束位置,實現(xiàn)高亮顯示

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

四,Python讀取excel數(shù)據(jù)批量寫入ES文檔數(shù)據(jù)

excel數(shù)據(jù)展示:

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

python中提供了elasticsearch包用于操作ES。需要注意的是elasticsearch包的版本,不同版本的es使用不同版本的elasticsearch包。由于此處安裝es是安裝的elastsearch7版本,所以python安裝elastsearch7包。

pip install elasticsearch7
from elasticsearch7 import Elasticsearch
# 導(dǎo)入elasticsearch7包
import openpyxl
# 導(dǎo)入openpyxl包用于讀取excel文檔中的數(shù)據(jù)

client = Elasticsearch(hosts="http://192.168.26.10:9200", http_auth=("elastic", "elastic"))
# 配置es的連接方式,http_auth 是設(shè)置es的用戶名和密碼

wb = openpyxl.load_workbook(r'test.xlsx')
sheet = wb['Sheet1']
# 讀取test.xlsx文件中的Sheet1表

res = list(sheet.rows)
# 使用列表封裝行的生成器
title = [i.value for i in res[0]]
# 將表格中行的value值放到列表中,即拿取表格的表頭數(shù)據(jù)

for item in res[1:]: # 從第二行開始遍歷
    data  = [i.value for i in item]
    dic = dict(zip(title,data))
    # 將每一行的value值和表頭封裝到字典中
    client.index(index='test_user_db',doc_type='_doc',document=dic)
    # 將拿取到的字典數(shù)據(jù)寫入到es的test_user_db索引中
    

在kibana界面中查詢test_user_db索引中的文檔數(shù)據(jù),檢查寫入是否成功。

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎

可以看到文檔寫入已成功。

也可以在python中利用Elasticsearch模塊查詢

query = {'match_all': {}}
# 查詢所有文檔數(shù)據(jù)
allDoc = client.search(index='test_user_db', query=query,size=30)
# 查詢test_user_db索引,指定顯示最大條數(shù)30條

for item in allDoc['hits']['hits']:
    print(item['_source'])

結(jié)果輸出:

elasticsearch7 字段加入索引,elasticsearch,學(xué)習(xí),筆記,搜索引擎文章來源地址http://www.zghlxwxcb.cn/news/detail-772536.html

到了這里,關(guān)于Elasticsearch基礎(chǔ)學(xué)習(xí)筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Elasticsearch基礎(chǔ)篇(三):Elasticsearch7.x的集群部署

    Elasticsearch基礎(chǔ)篇(三):Elasticsearch7.x的集群部署

    Elasticsearch集群是一個強大的搜索和分析引擎,由多個節(jié)點組成,每個節(jié)點都是一個獨立的Elasticsearch實例。這些節(jié)點協(xié)同工作,共同構(gòu)建一個高度可用和可擴(kuò)展的搜索引擎。本文將深入探討Elasticsearch集群的架構(gòu)和部署,包括主節(jié)點、數(shù)據(jù)節(jié)點、客戶端節(jié)點、分片以及節(jié)點間的

    2024年02月05日
    瀏覽(25)
  • python使用ElasticSearch7.17.6筆記

    python使用ElasticSearch7.17.6筆記

    數(shù)操作系統(tǒng):windows10 我開始使用最新的版本,8.4.1但是使用過程中kibana啟動不了,就索性使用舊版; 下載地址: es7.17.6 下載地址? kibana7.17.6下載地址 解壓到合適的位置,更改elasticsearch.yml 添加配置如下: 更改kibana.yml配置 到各自的bin目錄下啟動兩個服務(wù)bat文件, 在瀏覽器中

    2024年02月07日
    瀏覽(23)
  • elasticsearch7基礎(chǔ)用法及java中使用

    elasticsearch7基礎(chǔ)用法及java中使用

    GET、POST、PUT、DELETE、HEAD。 id content 1001 my name is zhang san 1002 i name is li si 1003 my name is wang wu keyword id name 1001,1002,1003 zhang 1001a my 1001,1003 PUT請求:http://127.0.0.1:9200/索引名稱 返回值: 表頭 含義 health 當(dāng)前服務(wù)器健康狀態(tài): green (集群完整) yellow (單點正常、集群不完整) red(單點不正

    2024年02月03日
    瀏覽(55)
  • ElasticSearch7.3學(xué)習(xí)(十八)----多索引搜索

    1、multi-index 多索引搜索 多索引搜索就是一次性搜索多個index下的數(shù)據(jù) 應(yīng)用場景:生產(chǎn)環(huán)境log索引可以按照日期分開。 2、_all metadata的原理和作用 直接可以搜索所有的field,任意一個field包含指定的就可以搜索出來。我們在進(jìn)行中搜索的時候,難道是對document中的每一個

    2024年02月11日
    瀏覽(30)
  • 本地部署Canal筆記-實現(xiàn)MySQL與ElasticSearch7數(shù)據(jù)同步

    本地部署Canal筆記-實現(xiàn)MySQL與ElasticSearch7數(shù)據(jù)同步

    本地搭建canal實現(xiàn)mysql數(shù)據(jù)到es的簡單的數(shù)據(jù)同步,僅供學(xué)習(xí)參考 建議首先熟悉一下canal同步方式:https://github.com/alibaba/canal/wiki 本地搭建MySQL數(shù)據(jù)庫 本地搭建ElasticSearch 本地搭建canal-server 本地搭建canal-adapter 本地環(huán)境為window11,大部分組件采用docker進(jìn)行部署,MySQL采用8.0.27, 推薦

    2024年02月02日
    瀏覽(96)
  • ElasticSearch 學(xué)習(xí)9 spring-boot ,elasticsearch7.16.1實現(xiàn)中文拼音分詞搜索

    ElasticSearch 學(xué)習(xí)9 spring-boot ,elasticsearch7.16.1實現(xiàn)中文拼音分詞搜索

    一、elasticsearch官網(wǎng)下載:Elasticsearch 7.16.1 | Elastic 二、拼音、ik、繁簡體轉(zhuǎn)換插件安裝 ik分詞:GitHub - medcl/elasticsearch-analysis-ik: The IK Analysis plugin integrates Lucene IK analyzer into elasticsearch, support customized dictionary. 拼音分詞:GitHub - medcl/elasticsearch-analysis-pinyin: This Pinyin Analysis plugin is

    2024年01月22日
    瀏覽(28)
  • Elasticsearch基礎(chǔ)學(xué)習(xí)筆記

    Elasticsearch基礎(chǔ)學(xué)習(xí)筆記

    目錄 一、全文搜索 1,數(shù)據(jù)分類 2,搜索分類: 3,什么是全文搜索 全文檢索是指: 倒排索引 二、ElasticSearch簡介 1,ElasticSearch是什么 2,ElasticSearch特點: 3,ElasticSearch版本特性: 4,Elastic生態(tài)圈--Elastic Stack介紹 5,ElasticSearch應(yīng)用場景 6,ElasticSearch單機(jī)版部署安裝 1,環(huán)境

    2024年02月03日
    瀏覽(20)
  • 【Elasticsearch學(xué)習(xí)筆記二】es的Mapping字段映射、Mapping字段常用類型、Mapping映射的創(chuàng)建、查看和更新、es數(shù)據(jù)遷移、ik分詞器

    【Elasticsearch學(xué)習(xí)筆記二】es的Mapping字段映射、Mapping字段常用類型、Mapping映射的創(chuàng)建、查看和更新、es數(shù)據(jù)遷移、ik分詞器

    目錄 1、Mapping字段映射概述 2、Mapping字段常用類型 3、映射中對時間類型詳解 1)采取自動映射器來映射 2)手工映射提前指定日期類型 4、ES的keyword的屬性ignore_above 5、Mapping映射的查看和創(chuàng)建 1)查看mapping信息:GET 索引名/_mapping 2)創(chuàng)建映射:PUT /索引名 3)?查看所有索引映

    2024年01月20日
    瀏覽(27)
  • ElasticSearch7.3學(xué)習(xí)(十六)----RestHighLevelClient Java api實現(xiàn)索引的創(chuàng)建、刪除、是否存在、關(guān)閉、開啟

    注意:導(dǎo)入的包區(qū)別,不同的包創(chuàng)建索引的方式不同。博主親身實踐,具體體現(xiàn)在createIndexRequest.mapping()里面。讀者可自行試驗。 ?由此可以猜想一下: 可以看到上述兩種方式導(dǎo)入的包的子類名是相同的,但是具體對索引的操作方式可能是不同的。具體的區(qū)別博主暫時還不清

    2024年02月16日
    瀏覽(91)
  • Elasticsearch基礎(chǔ)篇(六):es映射和常用的字段類型

    官方地址:Mapping 在 Elasticsearch 中,映射是索引的關(guān)鍵組成部分,它定義了文檔的結(jié)構(gòu)和字段。每個文檔都包含一個或多個字段,而映射定義了這些字段的數(shù)據(jù)類型、如何分析文本、字段是否可搜索等信息。 映射的主要作用包括: 定義字段類型 :你可以指定字段是文本、數(shù)

    2024年02月04日
    瀏覽(38)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包