ElasticSearch安装和基础
ElasticSearch
开源的ElasticSearch是目前全文搜索引擎的首选,可以快速的存储,搜索和分析海量数据
近乎实时存储检索 可以处理pb级别的数据 es使用java开发 和lucene作为核心
目的通过简单的Restful API来隐藏 Lucene的复杂性 从而让全文搜索变简单
去年的虚拟机上的es居然还可以正常启动
Docker安装
下载镜像文件
1
2docker pull elasticsearch:7.4.2
docker pull kibana:7.4.2创建实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35给虚拟机创建自己的目录 为了后面把配置挂载出来
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
表示es可以用远程的任何机器访问
echo "http.host:0.0.0.0">>/mydata/elasticsearch/config/elasticsearch.yml
--name 为容器起名字
-p 两个端口 9300是集群状态下节点通信
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
以单节点运行
-e "discovery.type=single-node" \
最大占用
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
挂载yml配置
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml\
挂载data和插件目录
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
后台启动
-d elasticsearch:7.4.2
启动后如果无法访问 看看是否权限问题
chomd -R 777 /mydata/elasticsearch
重启
安装kibana 注意改自己主机地址 kibana的可视化访问端口一般5601
docker run -name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10 -p 5601:5601 \
-d kibana:7.4.2可以使用postman发送测试请求
查看节点信息
1
http://192.168.56.10:9200/_cat/nodes
基本概念
Index(索引)
Type(类型)
倒排索引
维护一个倒排索引表 将整句拆分成单词
查出的记录就会有相关性得分
初步检索
_cat
GET /_cat/nodes:
查看所有节点
GET /_cat/health:
查看es健康状况
GET /_cat/master:
查看主节点
GET /_cat/indices:
查看所有索引
索引一个文档(保存)
PUT带id保存
- 如果发送多次就是更新操作
- 不允许不带id
保存一个数据,保存在索引的哪个类型下,指定用哪个唯一标识
在customer索引下的external类型下保存1号数据为
1 | PUT customer/external/1 |
带_的都是元数据, 代表基本信息
POST请求保存
- 保存的时候可以不指定id 是新增操作
- 带id 第一次是create 第二次就是update
查询文档
GET
- _index: 在哪个索引
- _type: 在哪个类型
- _id: 记录id
- _version: 版本号
- _seq_no: 并发控制字段,每次更新就会+1 用来做乐观锁
- _primary_term: 主分片重新分配,如重启,就会变化
- found: true
- _source: 真正的内容
更新文档
POST
如果带了_update,就一定要带上doc
这个操作会对比我们的元数据 如果数据一致 版本号就不会发生任何变化
1 | POST customer/external/1/_update |
如果不带_update, 不断更新 不断叠加版本
1 | POST customer/external/1/_update |
更新的同时可以添加属性
删除文档&索引
DELETE
1 | DELETE customer/external/1/ |
BULK批量API
可以进行保存 删除 更新操作
进阶检索
SearchAPI
ES支持两种基本方式检索
- 一个是通过使用REST request URI 发送搜索参数(url+检索参数)
QueryDSL
- 另一个是通过使用REST request body 来发送它们(url+请求体)
(未完待续)
评论