ElasticSearch

本次使用的es是6.5版本的

ElasticSearch介绍

ElasticSearch介绍

  • ES是一个使用Java语言并且基于!ucene编写的搜索引擎框架,他提供了分布式的全文搜索功能,提供了一个统一的基于RESTFUl风格的WEB接口,官方客户端也对多种语言都提供了相应的API。
  • Lucene:Lucene本身就是一个搜索引擎的底层。
  • 分布式:ES主要是为了突出他的横向扩展能力。
  • 全文检索:将一段词语进行分词,并且将分出的单个词语统一的放到一个分词库中,在搜索时,根据关键字去分词库中检索,找到匹配的内容。(倒排索引)
  • RESTFUL风格的WEB接口:操作ES很简单,只需要发送一个HTTP请求,并且根据请求方式的不同,携带参数的不同,执行相应的功能。

ES和Solr

  • Solr在查询死数据时,速度相对ES更快一些。但是数据如果是实时改变的,solr的查询速度会降低很多。ES的查询的效率基本没有变化。
  • Solr搭建基于需要依赖zeokeeper来帮助管理。ES本身就支持集群的搭建,不需要第三方的介入。
  • 最开始Solr的社区可以说是非常火爆,针对国内的文档并不是很多。在ES出现之后,ES的社区火爆程度直线上升,ES的文档非常健全。
  • ES对现在云计算和大数据支持的特别好。

倒排索引

将存放的数据,以一定的方式进行分词,并且将分词的内容存放到一个单独的分词库中当用户去查询数据时,会将用户的查询关键字进行分词,然后去分词库中匹配内容,最终得到数据的id标识。根据id标识去存放数据的位置拉取到指定的数据。

安装

ElasticSearch和kibana

docker compose ymal文件

ik分词器

进入es环境中的bin目录安装

然后重启es

验证

基本操作

es vs 关系型数据库

索引

  • ES的服务中,可以创建多个索引。
  • 每一个索引引默认披分成5片存储。
  • 每一个分片都会存在至少一个备份分片。备份分片默认不会帮助检索数据,当ES检索压力特别大的时候,备份分片才会帮助检索数据。
  • 备份的分片必须放在不同的服务器中。

TYPE

ES5.x版本中,一个Index下可以创建多个TyPE,ES6.x版本一个Index下可以创建一个Type.ES6.x版本中,ES7.x版本中,一个Index下没有Type.

document

相当于关系数据库中的记录

filed

相当于关系数据库中的列

es中restful的语法api

索引操作

建立索引

查看索引

kibana页面操作

或者

删除索引

kibana页面操作

或者接口

类型


创建索引并指定数据类型


文档操作

文档在ES服务中的唯一标识,_index,_type,_id 三个内容为组合,锁定一个文档,操作时添加还是修改

添加文档

更新文档


删除文档

ElasticSearch各种查询

term和terms查询

term查询

term的查询是代表完全匹配,搜索之前不会对你搜索的关键字进行分词,对你的关键字去文档分词库中去匹配内容。

terms查询


match查询

  • match查询属于高层查询,他会根据你查询的字段类型不一样,采用不同的查询方式。
  • 查询的是日期或者是数值的话,他会将你基于的字符串查询内容转换为日期或者数值对待。。如果查询的内容是一个不能被分词的内容(keyword),match查询不会对你指定的查询关键字进行分词。
    如果查询的内容时一个可以被分词的内容(text),match会将你指定的査询内容根据一定的方式去分词,去分词库中匹配指定的内容。
  • match查询,实际底层就是多个term查询,将多个term查询的结果给你封装到了一起

match_all

match查询

bool match查询

multi_match

其他查询

id查询

ids查询

prefix查询

fuzzy查询

wildcard查询

range查询

regexp查询

深分页scroll

现将用户指定的关键进行分词。

ES对from+size是有限制的,from和size二者之和不能超过1W原理:

  • from+size在ES查询数据的方式:

    第一步现将用户指定的关键进行分词。

    第二步将词汇去分词库中进行检索,得到多个文档的id。

    第三步去各个分片中去拉取指定的数据。耗时较长。

    第四步将数据根据score进行排序。耗时较长。

    第五步根据from的值,将查询到的数据舍弃一部分。

    第六步返回结果。

  • ScrolI+size在ES查询数据的方式(不适合实时数据):

    第一步现将用户指定的关键进行分词。

    第二步将词汇去分词库中进行检索,得到多个文档的id。

    第三步将文档的id存放在一个ES的上下文中。

    第四步根据你指定的size去ES中检索指定的数据,拿完数据的文档id,会从上下文中移除。

    第五步如果需要下一页数据,直接去ES的上下文中,找后续内容。

    第六步循环第四步和第五步

delete-by-query

复合查询

bool查询



boosting查询


filter查询

  • query,根据你的查询条件,去计算文档的匹配度得到一个分数,并且根据分数进行排序,不会做缓存的。
  • filter 根据你的靠询条件去查询文档,不去计算分数,而且fter会对经常被过滤的数据进行缓存。

高亮查询


聚合查询

ES的聚合查询和MySQL的聚合査询类型,ES的聚合查询相比MYSQL要强大的多,ES提供的统计数据的方式多种多样。

去重计数

,即cardinality,第一步先将返回的文档中的一个指定的field进行去重,统计一共有多少条

range查询

统计一定范围内出现的文档个数,比如,针对某一个Field的值在 0-100,100-200,200-300之间文档出现的个数分别是多少。

范围统计可以针对普通的数值,针对时间类型,针对ip类型都可以做相应的统计。

range, date_range,ip_range

统计聚合查询

地图经纬度搜索

ES中提供了一个数据类型 geg_point,这个类型就是用来存储经纬度的。创建一个带geg_point类型的索引,并添加测试数据



相关推荐
Elasticsearch26 分钟前
Elastic 与 Deductive AI 携手合作,加速工程团队的 agent 式事件调查
elasticsearch
Elasticsearch1 小时前
将你的 Grafana Kubernetes 仪表板迁移到 Elastic Observability:相同的 PromQL,30 倍更快的查询
elasticsearch
小K漫剧创作笔记1 小时前
AI短剧出海从「选修课」变「必修课」:合规分发正在成为内容全球化的真正门槛
大数据·人工智能·ai·aigc·漫剧
samLi06201 小时前
【数据集】中国“千兆城市”关键指标数据(2021-2023年)
大数据
城数派2 小时前
1991-2100年中国1km分辨率逐月气候指标栅格数据集(28个气象指标)
大数据
AC赳赳老秦2 小时前
司法公开数据采集应用:OpenClaw 抓取裁判文书公开信息,批量整理同类参考案例
java·大数据·python·数据挖掘·数据分析·php·openclaw
yurenshi16684 小时前
自媒体多账号管理工具 4 款实测:聚媒通 / 融媒宝 / 新榜小豆芽 / 矩阵通横向对比,快速选型
大数据·矩阵·媒体
nVisual5 小时前
机柜PDU安装位置与空间建模方案
大数据·网络·数据库·信息可视化·数据中心基础设施管理
@insist1235 小时前
系统规划与管理师-流程评价与持续改进核心知识-终章
大数据·人工智能·软考·系统规划与管理师·软件水平考试·系统规划与管理工程师
TechEdu2026066 小时前
[计算机科学]大数据硬件架构与软件架构概览
大数据·计算机科学