Windows服务下的安装部署:
下载运行ES:
1,官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch
注:右侧选择历史版本,jdk1.8对应的版本是7.x的。
下载完以后进入bin目录,输入elasticsearch回车;或者直接双击 elasticsearch.bat 进行启动。
注:请确认环境变量是否已经配置成功
注:请确认java版本是否为ES对应版本
启动以后浏览器输入 http://localhost:9200/ 查看是否启动成功,如下图是成功的
2,下载对应版本的ik分词器:https://github.com/medcl/elasticsearch-analysis-ik/releases
注:解压到 es目录下的plugins下 命名为ik
3,下载对应版本的Kibana:https://www.elastic.co/guide/en/kibana/current/install.html
Linux服务下的安装部署:
1,创建网络,需要es和kibana容器互联,在同一个网络(可省略)
docker network create es-net
2,将es.tar 和 kibana.tar上传到服务器,运行命令加载即可:
docker load -i es.tar
docker load -i kibana.tar
3,运行docker命令,部署单点es
======================================================================================================================
docker run -d \
--name es \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ // 设置内存大小
-e "discovery.type=single-node" \ // single-node单机模式
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network es-net \ // network:处在同一网络 网络名
-p 9200:9200 \ //http://127.0.0.1:9200:客户访问端口
-p 9300:9300 \ // 9300:es容器各个容器互联端口
elasticsearch:7.12.1
=======================================================================================================================
命令解释:
- `-e "cluster.name=es-docker-cluster"`:设置集群名称
- `-e "http.host=0.0.0.0"`:监听的地址,可以外网访问
- `-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"`:内存大小
- `-e "discovery.type=single-node"`:非集群模式
- `-v es-data:/usr/share/elasticsearch/data`:挂载逻辑卷,绑定es的数据目录
- `-v es-logs:/usr/share/elasticsearch/logs`:挂载逻辑卷,绑定es的日志目录
- `-v es-plugins:/usr/share/elasticsearch/plugins`:挂载逻辑卷,绑定es的插件目录
- `--privileged`:授予逻辑卷访问权
- `--network es-net` :加入一个名为es-net的网络中
- `-p 9200:9200`:端口映射配置
=======================================================================================================================
启动成功:
3,运行docker命令,部署单点kibana
network:同es所处在的同一网络
ELASTICSEAECH_HOSTS :es的名称 ,端口
http://127.0.0.1:5601 :客户访问端口
启动成功:
测试IK分词器:ik_smart (智能切分,粗粒度) ik_max_word(最细切分,细粒度)
使用命令: docker volume inspect es-plugins 找到目录
将IK分词器放进去
重启es : docker restart es
IK分词器拓展词库,停用词库:
修改config文件中的 IKAnalyzer.cfg.xml 文件
在config文件目录下添加扩展字典,停用字典
4,mapping属性:详见 https://www.jianshu.com/p/01f489c46c38
实例:
像 tradeType、map 这两个属性属于Object类型,在es中不必特殊指定类型,如下
es中的【nested】类型,特定用在某属性是数组类型,而且该属性在es结构中必须要加上【nested】类型,否在在检索、聚合时候就会出现报错或查不到数据问题,以下:
es中的结构如下:subjectList 便是数组类型,并且泛型是包装类型,在es中都需要指定该字段是【nested】。
非常注意:如果某属性的泛型是基本类型(比如:List< String >、List< Integer > )那es的类型可不是【nested】,而是keyword或Integer 这种。如下:
准备索引:
通过es控制台或者postman都可以进行索引操作,类型mysql可视化工具对mysql数据库表结构操作类型,只不过,es对于创建后的索引的字段类型不可改变,如果一定要变更字段类型,就需要删除索引重新创建,这就是为什么对于要插入的数据类型严格控制的原因。
查询,删除索引库语法:
修改索引库:索引库和mapping一旦创建无法修改,但是可以添加新的字段,语法如下
文档操作:
添加,查询,删除文档
修改文档:
全量修改:(上条数据修改后) 当索引(例如:1)存在,则是修改,不存在则是新增
局部修改:
创建索引注意点:
1,一个字段想要查询其他字段的内容可以用:copy_to
2,地理位置坐标:需要使用geo_point(代表横纵坐标上的一个点)或 geo_shape(代表横纵坐标上的一片区域,例如一条直线) ,加入横纵坐标
RestClient操作索引库
1,引入es的 RestHighLevelClient依赖:版本需和安装的 es 保持一致
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.12.1</version>
</dependency>
修改版本一致
酒店实体举例创建,删除,判断索引是否存在
初始化连接地址:
酒店实体举例:新增文档,查询文档,更新文档,删除文档
DSL查询文档
全文检索查询
精确查询:term:根据词条精确值查询 range:根据值范围查询(gt :大于 lt:小于 gte:大于等于 lte:小于等于)
根据经纬度查询:
矩形范围查询:FIELD 对应的是 location字段
对应查询例如:附近的人,酒店等~~~
复合查询:将其他简单查询组合起来
相关性算分(了解)
搜索结果处理:排序,分页,高亮
项目中使用:
1,导入amqp(RabbitMQ)依赖包,yaml文件中添加amqp的地址
生产者方:设置交换机,队列,RoutingKey
绑定交换机和队列: