SpringBoot进阶教程(七十三)整合elasticsearch

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475v阅读目录* v基础概念

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

在上一篇文章linux安装elasticsearch中,已经介绍了在linux安装elasticsearch,这篇文章主要介绍介绍es的一些基础的入门教程、docker安装elasticsearch以及在springboot中整合elasticsearch。

回到顶部## v基础概念

1.0 Node与Cluster

Node:单个Elastic实例称为一个节点(node)

Cluster:一组节点构成一个集群(cluster)

当然,这也正是集群和节点最通俗的解释,这个解释适用于绝大部分,类似elasticsearch这种分布式架构。如之前讲过的《详解Redis Cluster集群》。你可以可以说node就是单个redis实例,这样的实例我们称为一个节点,多个这样的节点组成的集群。正因为如此,我们在设计架构的时候,需要考虑不同环境的不同节点的节点名注意不要重复,避免配置集群遇到尴尬。

1.1 Index

由一个和多个分片组成,通过索引的名字在集群内进行唯一标识。索引是具有某种相似特征的文档的集合,Elastic数据管理的顶层设计就叫做 Index(索引)。类似mysql中的database。

索引也分为名次索引和动词索引。

  • 索引(名词):如前所述,一个 索引 类似于传统关系数据库中的一个 数据库 ,是一个存储关系型文档的地方。 索引 (index) 的复数词为 indices 或 indexes 。
  • 索引(动词):索引一个文档 就是存储一个文档到一个 索引 (名词)中以便被检索和查询。这非常类似于 SQL 语句中的 INSERT 关键词,除了文档已存在时,新文档会替换旧文档情况之外。

这个也好理解,类似词组"表演",看她的表演,表演的很精彩。这是两个意思。

1.2 Document

Elasticsearch是面向文档的,意味着它存储整个对象或文档。文档是可以被索引的基本信息单元,文档用JSON表示。

例如:存储员工信息,那就是一个员工信息代表一个文档,多个文档组成一个index。类似于关系型数据库中的一条数据通过id在Type内进行唯一标识。

1.3 Type

类别,指索引内部的逻辑分区,通过type的名字在索引内进行唯一标识。在查询时如果没有该值,则表示在整个索引中查询。

例如:在员工表里,可以按照员工籍贯分组(北上、上海、广州),也可以按照员工工种分组(职能、产品、运营)。这种分组可以理解为type。

在7.x版会移除Type。Elasticsearch为何要在7.X版本中去除type

1.4 与关系型数据库对比

Relational DB Elasticsearch
数据库(database) 索引 index
表(tables) 类型 types
行(rows) 文档 documents
字段(columns) fields

1.5 Mapping

定义文档及其包含的字段是如何存储和索引的过程,类似于数据库中的表结构定义,主要作用如下:

  • 定义index下的字段名
  • 定义字段类型,比如数值型、浮点型、布尔型等
  • 定义倒排索引相关的设置,比如是否索引、记录position等

回到顶部## vdocker安装Elasticsearch

在上一篇文章中,已经详细介绍了linux安装elasticsearch,这篇文章讲解的elasticsearch主要围绕docker展开。

2.0 拉取镜像

docker pull docker.io/elasticsearch:版本号

版本号是可选的,默认使用latest

2.1 创建&运行容器

docker run -d --name=es7 \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" elasticsearch:7.5.1

注意:若创建es持久化目录,则按下面的命令执行。

mkdir -p /data/elasticsearch
docker cp es7:/usr/share/elasticsearch/data /data/elasticsearch/
docker cp es7:/usr/share/elasticsearch/logs /data/elasticsearch/
docker rm -f es7
docker run -d --name=es7 \
 --restart=always \
 -p 9200:9200 -p 9300:9300 \
 -e "discovery.type=single-node" \
 -v /data/elasticsearch/data:/usr/share/elasticsearch/data \
 -v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
elasticsearch:7.5.1

注意:若es起不来,可能是容器没有宿主机挂载的目录的读写权限,那就需要赋予它读写权限: chmod 777 /data/elasticsearch

2.2 验证效果

输入ip + 端口号(9200)验证。

2.3 安装elasticsearch-head

docker pull mobz/elasticsearch-head:5

2.4 创建&运行head容器

docker run -d --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5

2.5 跨域问题

url访问http://toutou.com:9100之后发现无法连接http://toutou.com:9200,需要在es服务端做CORS的配置。

修改docker中es7的elasticsearch.yml文件

[root@localhost data]# docker exec -it es7 /bin/bash
[root@f1358d18c9be elasticsearch]# vi config/elasticsearch.yml

在elasticsearch.yml底部追加如下配置:

http.cors.enabled: true 
http.cors.allow-origin: "*"

保存以后退出docker并重启docker实例。

[root@f1358d18c9be elasticsearch]# exit
exit
[root@localhost data]# docker restart es7
es7

2.6 验证elasticsearch-head

SpringBoot进阶教程(七十三)整合elasticsearch

2.7 安装中文分词器ik

注意:ik分词器的版本需要和es的版本一致。

docker exec -it es7 /bin/bash
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.5.1/elasticsearch-analysis-ik-7.5.1.zip
-> Downloading https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.5.1/elasticsearch-analysis-ik-7.5.1.zip

进入plugins可以看到IK分词器已经安装成功,重启docker实例即可。

SpringBoot进阶教程(七十三)整合elasticsearch

回到顶部## vRESTful API

任何语言都可以使用RESTful API通过9200端口(默认端口号)和Elasticsearch进行通信,也可以用web客户端(浏览器Sense插件、postman)访问 Elasticsearch ,甚至直接使用curl命令就可以和Elasticsearch交互。

Elasticsearch为很多语言(Groovy、JavaScript、.NET、 PHP、 Perl、 Python 和 Ruby)提供了官方客户端。详情:Elasticsearch Clients

3.0 Elasticsearch请求格式:

Elasticsearch请求和我们认识的其它HTTP请求一样,由多个部件组成,具体格式如下:

curl -X<VERB> '<PROTOCOL>://&l
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值