ElasticSearch
elasticsearch 是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。
特点
- 分布式,无需人工搭建集群(solr就需要人为配置,使用Zookeeper作为注册中心)
- Restful风格,一切API都遵循Rest原则,容易上手
- 近实时搜索,数据更新在Elasticsearch中几乎是完全同步的。
一、安装
1、docker方式安装elasticsearch
- 安装
1
$ docker pull elasticsearch
- 启动 (java程序访问可以在增加一个9300端口)
1
$ docker run --name elasticsearch -p 9200:9200 -e "discovery.type=single-node" -d elasticsearch
- 进入容器修改配置
1
2
3$ docker exec -it elasticsearch /bin/bash
$ cd /usr/share/elasticsearch/config/
$ vi elasticsearch.yml - 追加一下内容,解决跨域问题
1
2http.cors.enabled: true
http.cors.allow-origin: "*" - 重启容器默认访问链接http://127.0.0.1:9200就可以打开kibana的界面了。
1
2$ exit
$ docker restart elasticsearch2、安装ik分词器
es自带的分词器对中文分词不是很友好,elasticsearch的版本和ik分词器的版本需要保持一致;1
2
3
4$ cd /usr/share/elasticsearch/plugins/
$ elasticsearch-plugin install 对应版本的安装包地址(https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.2.0/elasticsearch-analysis-ik-7.2.0.zip)
$ exit
$ docker restart elasticsearch 可以在kibana界面的dev tools中验证是否安装成功3、docker安装kibana
可视化elasticsearch管理页面 - 安装 (要与es版本对应)
1
$ docker pull kibana
- 启动kibana(使用–link连接到elasticsearch容器 ,或者使用Network让其在同一个网络下) 浏览器输入http://127.0.0.1:5601就可以打开kibana的界面了。
1
2$ docker run --name kibana -p 5601:5601 -d kibana
$ docker start kibana - 遇到问题
1)访问提示 Kibana server is not ready yet
第一:把KB和ES版本调整为统一版本
第二:将配置文件kibana.yml中的elasticsearch.url改为正确的链接
第三:保持kibana和elasticsearch在同一个网络模式下,可以使用默认的bridge网络下的段的地址172.17.0.x
注意,默认为bridge网络,此网络下两个容器无法用127.0.0.x 的本地ip进行通信访问,如果想用要都切换到host模式
二、常用命令
1 | GET _search |
三、索引settings和mappings
1 | PUT loaravel-log-2020.11.05 |
四、重要知识点
查询搜索条件算分
索引的命名规则
创建一个新indx时 设置 setting mapping(字段类型,分词规则)
index template
聚合统计搜索使用(aggs) bucket按照规则诗句划分不同的组(相当于mysql group),metric 用于数据集的统计(可以统计bucket生成的数据集中的字段进行分析,例如平均值)
search -》协调节点-》查询所有分片-》取回id和排序合并-》去对应分片的数据节点取出具体doc信息
主节点 index(存储索引index信息,索引关联对应的分片) -》