ElasticSearch-全文检索(入门)

在看这篇博客之前,说明以下,这篇博客只是对es和Kibana的安装,还有对es的一些简单的使用,并不会对理论进行过多的介绍,谢谢大家的理解。

1、安装(挂载方式)

(1)拉取镜像

1 docker pull elasticsearch:7.4.2 存储和检索数据
2 docker pull kibana:7.4.2

 

(2)创建数据挂载文件夹

1 mkdir -p /mydata/elasticsearch/config
2 mkdir -p /mydata/elasticsearch/data

 

(3)设置所有ip都可以访问

echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml

 

 

(4)修改挂载文件夹的属性

1 chmod -R 777 /mydata/elasticsearch/ 

 

 

(5)允许以下命令(注意这些命令运行时,去掉换行,放在一行执行,否则会报错)

1 docker run --name elasticsearch -p 9200:9200 -p 9300:9300  -e "discovery.type"="single-node"
2 -e "ES_JAVA_OPTS"="-Xms64m -Xmx512m" \
3 -v/mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml\
4 -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
5 -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
6 -d elasticsearch:7.4.2

 

注意

-e ES_JAVA_OPTS="-Xms64m -Xmx256m" \ 测试环境下,设置 ES 的初始内存和最大内存,否则导
致过大启动不了 ES。
 
(6)安装Kibana
1 docker run --name kibana -e ELASTICSEARCH_HOSTS=ip+端口 -p 5601:5601 -d kibana:7.4.2

 

2、实际操作

(1)创建表结构(此步也可以省略,直接插入数据也是可以的,但是可能首次插入可能会影响插入速度)

 

 1 PUT /account
 2 {
 3   "mappings": {
 4     "properties": {
 5       "account_number": {
 6         "type": "integer"
 7       },
 8       "balance": {
 9         "type": "integer"
10       },
11       "firstname":{
12         "type": "text"
13       },
14       "lastname":{
15         "type": "text"
16       },
17       "age": {
18         "type": "integer"
19       },
20       "gender":{
21         "type": "keyword"
22       },
23       "address":{
24         "type": "text"
25       },
26       "employer":{
27         "type": "text"
28       },
29       "email":{
30         "type": "text"
31       },
32       "city":{
33         "type": "text"
34       },
35       "state":{
36         "type": "keyword"
37       }
38     }
39   }
40 }

 

 

(2)插入数据

a.批量插入数据

 1 POST account/_bulk
 2 {"index":{"_id":"1"}}
 3 {"account_number":1,"balance":39225,"firstname":"Amber","lastname":"Duke","age":32,"gender":"M","address":"880 Holmes Lane","employer":"Pyrami","email":"amberduke@pyrami.com","city":"Brogan","state":"IL"}
 4 {"index":{"_id":"6"}}
 5 {"account_number":6,"balance":5686,"firstname":"Hattie","lastname":"Bond","age":36,"gender":"M","address":"671 Bristol Street","employer":"Netagy","email":"hattiebond@netagy.com","city":"Dante","state":"TN"}
 6 {"index":{"_id":"13"}}
 7 {"account_number":13,"balance":32838,"firstname":"Nanette","lastname":"Bates","age":28,"gender":"F","address":"789 Madison Street","employer":"Quility","email":"nanettebates@quility.com","city":"Nogal","state":"VA"}
 8 {"index":{"_id":"18"}}
 9 {"account_number":18,"balance":4180,"firstname":"Dale","lastname":"Adams","age":33,"gender":"M","address":"467 Hutchinson Court","employer":"Boink","email":"daleadams@boink.com","city":"Orick","state":"MD"}
10 {"index":{"_id":"20"}}
11 {"account_number":20,"balance":16418,"firstname":"Elinor","lastname":"Ratliff","age":36,"gender":"M","address":"282 Kings Place","employer":"Scentric","email":"elinorratliff@scentric.com","city":"Ribera","state":"WA"}
12 {"index":{"_id":"25"}}
13 {"account_number":25,"balance":40540,"firstname":"Virginia","lastname":"Ayala","age":39,"gender":"F","address":"171 Putnam Avenue","employer":"Filodyne","email":"virginiaayala@filodyne.com","city":"Nicholson","state":"PA"}

 

b.单个插入(如果带id,就会以传入的id为主键,否则会自己生成主键id)

POST account/_doc/3
{"account_number":3,"balance":40540,"firstname":"Virginia","lastname":"Ayala","age":39,"gender":"F","address":"171 Putnam Avenue","employer":"Filodyne","email":"virginiaayala@filodyne.com","city":"Nicholson","state":"PA"}

 

执行结果:

 

 

 

(3)修改数据(与插入数据相同,有id存在就更新,id不存在就插入)

a. POST

1 POST account/_doc/3
2 {"account_number":3,"balance":40540,"firstname":"Virginia","lastname":"Ayala","age":39,"gender":"F","address":"171 Putnam Avenue","employer":"Filodyne","email":"virginiaayala@filodyne.com","city":"Nicholson","state":"PA"}

 

 

b.PUT

1 PUT account/_doc/3
2 {"account_number":3}

 

查询结果:

 

 

两种方式都是先删掉数据,再插入

不同:POST 操作会对比源文档数据,如果相同不会有什么操作,文档 version 不增加
PUT 操作总会将数据重新保存并增加 version 版本;
带_update 对比元数据如果一样就不进行任何操作。
看场景;
对于大并发更新,不带 update;
对于大并发查询偶尔更新,带 update;对比更新,重新计算分配规则。
c. 带update
POST account/_doc/25/_update
{
  "doc" : {"balance":3}
}

 结果截图:

 

 

 

(4)主键查找单条数据

1 GET account/_doc/25

 

 

posted @ 2025-04-11 13:11  it-小林  阅读(32)  评论(0)    收藏  举报