ElasticSearch8的改变

速度、扩展和相关性
速度、扩展和相关性方面进入了一个全新的 Elastic 8.0 时代,减少内存使用(从而让每个节点托管更多的数据),降低查询开销(在大规模部署中成效尤为明显),引入一些全新的功能来提高相关性。
通过原生矢量搜索提高搜索相关性

Elastic 8.0 版引入了一整套原生矢量搜索功能,让客户和员工能够使用他们自己的文字和语言来搜索并收到高度相关的结果。

在 Elasticsearch 8.0 版中,我们将对自然语言处理 (NLP) 模型的原生支持直接引入了 Elasticsearch,让矢量搜索功能更容易实现。此外,Elasticsearch 8.0 版还包含了对近似最近邻 (ANN) 搜索的原生支持,因此可以快速且大规模地比较基于矢量的查询与基于矢量的文档语料库。
强大的 NLP 功能打开全新的分析世界
Elasticsearch 始终是执行 NLP 的理想之选,但过去它需要在 Elasticsearch 之外进行一些处理,或编写一些相当复杂的插件。在 8.0 版中,用户现在可以直接在 Elasticsearch 中执行命名实体识别、情感分析、文本分类等,而无需使用额外的组件或进行编码。在 Elasticsearch 中原生计算和创建矢量,不仅在水平可扩展性方面取得了“胜利”(通过在服务器集群中分布计算资源来实现),这一变化还为 Elasticsearch 用户显著节省了时间和精力。

在 Elastic 8.0 版中,用户可以直接在 Elasticsearch 中使用 PyTorch Machine Learning 模型(如 BERT),并在 Elasticsearch 中原生使用这些模型执行推理。这些模型可以是您自己的定制模型,也可以是在 Hugging Face 等资源库中向社区发布的模型。

通过支持用户直接在 Elasticsearch 中执行推理,将强大的现代 NLP 功能整合到搜索应用程序和体验变得比以往更加容易(想想看:无需编码),本质上更加高效(得益于 Elasticsearch 的分布式计算功能),而且 NLP 本身的速度也会显著加快,因为您无需将数据移动到单独的进程或系统中。
快速、大规模搜索
因为 Elastic 8.0 版是基于 Lucene 9.0 开发的,那些利用现代 NLP 的搜索体验,都可以借助(新增的)对近似最近邻搜索的原生支持,快速且大规模地实现。通过 ANN,可以快速并高效地将基于矢量的查询与基于矢量的文档语料库(无论是小语料库、大语料库还是巨型语料库)进行比较。
重要更新
(1)Rest API相比较7.x而言做了比较大的改动(比如彻底删除_type),为了降低用户的升级成本,8.x会暂时的兼容7.x的请求。
(2)默认开启安全配置(三层安全),并极大简化了开启安全需要的工作量,可以这么说:7.x开启安全需要10步复杂的步骤比如CA、证书签发、yml添加多个配置等等,8.x只需要一步即可)。
(3)存储空间优化:更新了倒排索引,对倒排文件使用新的编码集,对于keyword、match_only_text、text类型字段有效,有3.5%的空间优化提升,对于新建索引和segment自动生效。
(4)优化geo_point,geo_shape类型的索引(写入)效率:15%的提升。
(5)新特性:支持上传pyTorch模型,在ingest的时候使用。比如在写入电影评论的时候,如果我们想要知道这个评论的感情正负得分,可以使用对应的AI感情模型对评论进行运算,将结果一并保存在ES中。
(6)技术预览版KNN API发布,(K邻近算法),跟推荐系统、自然语言排名相关。之前的KNN是精确搜索,在大数据集合的情况会比较慢,新的KNN提供近似KNN搜索,以提高速度。
(7)对ES内置索引的保护加强了:elastic用户默认只能读,如果需要写权限的时候,需有allow_restrict_access权限
运行条件
需要 Java 17 才能运行 Elasticsearch。

安装ElasticSearch和kibana

下载地址: https://www.elastic.co/cn/downloads/?elektra=home&storm=hero

ElasticSearch要和kibana的版本一致

linux安装和在windows上安装都一样:

  1. 解压压缩包
  2. 启动ElasticSearch和kibana的启动脚本(bat或者sh) 都在bin目录下

我这里就不使用Linux了,就在本机windows安装

因为在8.+增加了默认安全的设置,第一次启动会有es的账户密码和Kibana许可证

启动es后,在关闭es,这时候配置文件就被增加关于安全的默认值了,我们需要将安全设置给全部关闭了,去config/elasticsearch.yml 修改下面参数(有的就修改,没有就添加)

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
xpack.security.http.ssl:enabled: false
xpack.security.transport.ssl:enabled: false

在遇到了下面问题,那么还是遵循上面的步骤解决

received plaintext http traffic on an https chann el, closing connection Net

修改es的bin/jvm.options文件,默认为4G占用内存,改为1G(本地使用)

-Xms1g
-Xmx1g

如果启动的时候出现了报错或者闪退那么可以到logs/elasticsearch.log里查看错误信息

操作ElasticSearch(crud)

进行入开发者工具中

索引

创建索引(结构化方式)

PUT /employee
{"settings": {"number_of_shards": 1,"number_of_replicas": 1},"mappings": {"properties": {"name": {"type": "text"},"age": {"type": "integer"}}}
}

查询指定索引映射信息

GET /employee/_mappings

删除指定索引

DELETE /employee

添加或修改

给索引添加或者修改一条数据

语法:
POST /index1/_doc/文档的id
文档id就相当于数据库的行id

post /employee/_doc/2
{"name":"hu1","age":23,"time":"2020-09-01"
}

_doc 自适应: 如果存在那么就是修改,如果不存在那么就是添加

_update 修改
_create 添加 ,如果存在,则失败

当然也可以不指定文档id,会自分配的

删除

删除指定文档

DELETE /employee/_doc/1

查询

查询集群健康

GET _cluster/health

green:主分片与副本都正常分配
yellow:主分片全部正常分配,有副本分片未能正常分配
red:有主分片未能分配,当服务器的磁盘容量超过85%时创建了一个索引

查询es中所有索引内的信息

GET _search
{"query": {"match_all": {}}
}

查询指定索引内的信息

GET /employee/_search
{"query": {"match_all": {}}
}

分页查询指定索引内的信息

GET /employee/_search
{"query": {"match_all": {}},"from": 0,"size": 1
}

from: 起始值
size: 查询多少条

查询指定文档

GET /employee/_doc/1

复杂查询

查询指定属性

查询name是牛顿的相关分词数据

GET /employee/_search
{"query": {"match": {"name": "牛顿"}}
}
指定属性排序

查询name是牛的相关分词数据,并且以年龄倒序

GET /employee/_search
{"query": {"match": {"name": "牛"}},"sort": [{"age": {"order": "desc"}}]
}
属性过滤(where)

term针对查询不会进行分词操作

查询年龄是30的

GET /employee/_search
{"query": {"bool": {"filter": [{"term": {"age": 30}}]}}
}
范围查询

大于20 并且小于25 ,以倒序显示(大->小)

GET /index-usereseneity/_search
{"query": {"range": {"price": {"gte": 20,"lte": 25}}},"sort": [{"price": {"order": "desc"}}]
}

聚合查询

查询name是牛的相关分词,并且以age聚合求出相关年龄有多少人

GET /employee/_search
{"query": {"match": {"name": "牛"}},"aggs": {"group_by_age": {"terms": {"field": "age"}}}
}

高亮查询

fragment_size :指定高亮数据展示多少个字符回来,不添加默认全部显示,反正我一般都不使用这个字段的

pre_tag:指定前缀标签,如 <font color="red">
post_tags:指定后缀标签,如 </font>
field:指定那个字段为高亮字段

GET /index-usereseneity/_search
{"query": {"match_phrase": {"dec" : "匹配"}},"highlight": {"fields": {"dec": {}},"pre_tags": "<font color='red'>","post_tags": "</font>","fragment_size": 20}
}


多字段高亮
查询name或者dec, 并且高亮查询结果

GET /index-usereseneity/_search
{"query": {"bool": {"should" : [{"match": { "name" : "hals" }},{"match" : { "dec" : "匹配" }} ]}},"highlight": {"fields": {"dec": {},"name": {}},"pre_tags": "<font color='red'>","post_tags": "</font>","fragment_size": 20}
}

添加ik分词器

安装ik分词器

注意: 要和es的版本一致 ,否则启动es会报错

下载地址 : https://github.com/medcl/elasticsearch-analysis-ik/releases

镜像加速: https://gitcode.net/mirrors/medcl/elasticsearch-analysis-ik

linux和windows都一样,在plugins目录下将下载的elasticsearch-analysis-ik.xx.zip文件解压修改文件名称为ik文件

重启elasticsearch

使用ik分词器创建索引

ik_max_word 是最大分词 ,ik_smart是最小分词

注意: ik分词器只适用于text文本类型的字段

     Text:会分词,然后进行索引支持模糊、精确查询不支持聚合keyword:不进行分词,直接索引支持模糊、精确查询支持聚合
PUT /employee
{"settings": {"number_of_shards": 1,"number_of_replicas": 1},"mappings": {"properties": {"name": {"type": "text","analyzer": "ik_max_word","search_analyzer": "ik_smart"},"age": {"type": "integer"}}}
}

Springboot操作ES8的高级教程附带自己封装的工具类

点赞 -收藏-关注-便于以后复习和收到最新内容 有其他问题在评论区讨论-或者私信我-收到会在第一时间回复 如有侵权,请私信联系我 感谢,配合,希望我的努力对你有帮助^_^

ElasticSearch8-使用教程相关推荐

  1. Linux centos7.6 安装elasticsearch8.x (es8) 教程

    系列-Linux centos7.6 安装elasticsearch8.x (es8) 教程 Linux centos7.6 安装elasticsearch8.x (es8) 教程_言之有李LAX的博 ...

  2. Windows10下安装Elasticsearch8.1.1过程遇到的问题

    Elasticsearch无法正常跳转localhost:9200 问题描述 错误代码 其他解决方法 问题描述 官网下载了最新的Elasticsearch8.1.1的压缩包,根据安装要求,解压之后运行 ...

  3. 最新Elasticsearch8.4.3 + Kibana8.4.3在云服务器Centos7.9安装部署(参考官方文档)

    一.前言   最近笔者学习Elasticsearch,官方最新稳定版为 Elasticsearch-8.4.3,想在云服务器上Centos7.9搭建.搭建之路坑多路少啊(指网上的博文教程五花八门,基本 ...

  4. 【lnmp+ELK+Nginx+GeoIP】超详细新版ELK8.5.0解析收集Nginx日志并实现数据可视化与IP地址地图可视化教程-2022年11月版

    超详细新版ELK8.5.0+lnmp1.9解析收集Nginx日志并实现数据可视化与IP地址地图可视化教程-2022年11月版 前言 1.基础环境和所需要的软件包 1.1服务器配置(仅供参考) 1.2 ...

  5. Elasticsearch8.4.3安装最新ik分词器elasticsearch-analysis-ik【v8.4.3版本】(参考官方文档)

    一.前言   ik分词器官方源码版下载地址:   https://github.com/medcl/elasticsearch-analysis-ik     ik分词器官方发行版下载地址:   ht ...

  6. 使用Docker搭建svn服务器教程

    使用Docker搭建svn服务器教程 svn简介 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很 ...

  7. mysql修改校对集_MySQL 教程之校对集问题

    本篇文章主要给大家介绍mysql中的校对集问题,希望对需要的朋友有所帮助! 推荐参考教程:<mysql教程> 校对集问题 校对集,其实就是数据的比较方式. 校对集,共有三种,分别为:_bi ...

  8. mysql备份psb文件怎么打开_Navicat for MySQL 数据备份教程

    原标题:Navicat for MySQL 数据备份教程 一个安全和可靠的服务器与定期运行备份有密切的关系,因为错误有可能随时发生,由攻击.硬件故障.人为错误.电力中断等都会照成数据丢失.备份功能为防 ...

  9. php rabbmq教程_RabbitMQ+PHP 教程一(Hello World)

    介绍 RabbitMQ是一个消息代理器:它接受和转发消息.你可以把它当作一个邮局:当你把邮件放在信箱里时,你可以肯定邮差先生最终会把邮件送到你的收件人那里.在这个比喻中,RabbitMQ就是这里的邮箱 ...

最新文章

  1. spi协议时序图和四种模式实际应用详解
  2. Redis 集群分布式锁与 API 网关分布式限流
  3. 单例模式---懒汉模式与饿汉模式
  4. Python 类的特殊成员方法详解
  5. Win7安装OnlyOffice(不使用Docker)
  6. 查看linux的计划任务日志,查看计划任务日志(共5篇).docx
  7. 在 Windows Azure 上部署并定制化 FreeBSD 虚拟机镜像
  8. python 硬件模拟_如何编写一个硬件模拟器?
  9. python函数模块_06.Python函数和模块
  10. (87)FPGA锁存器与触发器-面试必问(十一)(第18天)
  11. node2vec python_node2vec 安装失败经历
  12. java 进度条实现原理_java进度条功能的实现原理是什么?实例展示
  13. 获取当前日期上周的周一和周日日期
  14. 解读第一个C++程序
  15. 卢克的HTML与CSS基础
  16. Leetcode 905 c#
  17. 公众号互推还是要的,要不怎么让更多人看到可爱的我呢?
  18. 【教程】搜索引擎高级语法
  19. 支付宝APP支付 显示 系统繁忙 请稍后再试 ALI40247
  20. java如何连接Sublime_第一节:使用Sublime 搭建Java学习环境

热门文章

  1. 朱啸虎看好的ofo连续三月涨215% 共享单车竞争取得领先
  2. 圆形ImageView系列(一)-----Xfermode+View
  3. python穷举法列举_穷举法应用举例.doc
  4. java readline 跳行_各种getline/readline的总结
  5. QEMU模拟FriendlyArm的Mini2440开发板
  6. springboot配置swagger
  7. 基于python的电脑硬体设备信息获取
  8. 计算机快捷键的切换用户,电脑如何切换屏幕_电脑怎么切换另一个界面快捷键...
  9. Chatbot-架构
  10. linux grep命令Ff和wf从两个文件中提取相同内容的行