news 2026/5/13 6:53:45

Elasticsearch

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Elasticsearch

Elasticsearch(高性能分布式搜索引擎)

搜索引擎技术排名:

  1. Elasticsearch: 开源的分布式搜索引擎
  2. Splunk: 商业项目
  3. Solr: Apache的开源搜索引擎

Elasticsearch结合Kibana、Logstash、Beats,是一整套技术栈,被叫做ELK。被广泛应用在日志数据分析、安全监控等领域。

倒排索引

elasticsearch采用倒排索引:

  • 文档(document):每条数据就是一个文档
  • 词条(term):文档按照语义分成的词语

业务流程

文档、词条、正向索引与倒排索引说明

  • 每一条数据就是一个文档。
  • 对文档中的内容分词,得到的词语就是词条。

基于文档id创建索引的方式称为正向索引,其特点是根据id查询快,但是查询词条时必须先找到文档,而后判断是否包含词条。

对文档内容分词,对词条创建索引,并记录词条所在文档的id,这种方式称为倒排索引,查询时会先根据词条查询到文档id,而后根据文档id查询文档。

IK分词器

中文分词往往需要根据语义分析,比较复杂,这就需要用到中文分词器,例如IK分词器。IK分词器是林良益在2006年开源发布的,其采用的正向迭代最细粒度切分算法一直沿用至今。

其安装的方式也比较简单,只要将资料提供好的分词器放入elasticsearch的插件目录即可。

在Kibana的DevTools中可以使用下面的语法来测试IK分词器:

POST /_analyze { "analyzer": "standard", "text": "黑马程序员学习java太棒了" }

语法说明:

  • POST:请求方式
  • /_analyze:请求路径,这里省略了http://192.168.150.101:9200,由kibana帮我们补充
  • 请求参数,json风格:
    • analyzer:分词器类型,这里是默认的standard分词器
    • text:要分词的内容

IK分词器允许我们配置拓展词典来增加自定义的词语。

分词器的作用是什么?

  • 创建倒排索引时,对文档分词
  • 用户搜索时,对输入的内容分词

IK分词器有几种模式?

  • ik_smart:智能切分,粗粒度
  • ik_max_word:最细切分,细粒度IK分词器

如何拓展分词器词库中的词条?

  • 利用config目录的IkAnalyzer.cfg.xml文件添加拓展词典
  • 在词典中添加拓展词条

ES基础概念

索引(index):相同类型的文档的集合

对比传统mysql数据库

索引库操作- Mapping 映射属性

Mapping映射属性

mapping是对索引库中文档的约束,常见的mapping属性包括:

  • type:字段数据类型,常见的简单类型有:
    • 字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)
    • 数值:long、integer、short、byte、double、float、
    • 布尔:boolean
    • 日期:date
    • 对象:object
  • index:是否创建索引,默认为true
  • analyzer:使用哪种分词器
  • properties:该字段的子字段

索引库操作-索引库的CRUD

PUT(新增)(不支持修改)

索引库和mapping一旦创建无法修改,但是可以添加新的字段,语法如下:

PUT /索引库名/_mapping { "properties": { "新字段名":{ "type": "integer" } } }

示例:

PUT /heima/_mapping { "properties": { "age":{ "type": "integer" } } }

文档操作-文档CRUD

文档操作-批量处理

Elasticsearch中允许通过一次请求中携带多次文档操作,也就是批量处理,语法格式如下:

POST /_bulk { "index" : { "_index" : "索引库名", "_id" : "1" } } { "字段1" : "值1", "字段2" : "值2" } { "index" : { "_index" : "索引库名", "_id" : "1" } } { "字段1" : "值1", "字段2" : "值2" } { "index" : { "_index" : "索引库名", "_id" : "1" } } { "字段1" : "值1", "字段2" : "值2" } { "delete" : { "_index" : "test", "_id" : "2" } } { "update" : {"_id" : "1", "_index" : "test"} } { "doc" : {"field2" : "value2"} }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 6:50:21

Linux网络编程面试高频题

1. 什么是高可靠通信?高可靠通信是指在通信过程中,数据能够无丢失、无重复、无乱序、无损坏地从发送方传递到接收方,并且能够应对网络丢包、延迟、乱序等异常情况。典型实现:TCP 协议,通过确认应答、超时重传、序号机制…

作者头像 李华
网站建设 2026/5/13 6:50:20

Go语言限流与防爬:API安全防护

Go语言限流与防爬:API安全防护 1. 限流概述 API限流防止恶意访问和爬虫,Go语言可以通过令牌桶算法实现高效的限流。 2. 限流实现 package rateimport ("sync""time" )type RateLimiter struct {rate float64capacity inttokens …

作者头像 李华
网站建设 2026/5/13 6:47:24

跨镜人员动线标签化归类,赋能厂区人员精细化分级管理

跨镜人员动线标签化归类,赋能厂区人员精细化分级管理现代化工业厂区人员构成复杂,涵盖一线作业人员、设备维保人员、质检人员、管理人员、外协施工人员、外来访客等多类群体,不同岗位人员作业动线、通行权限、活动范围差异显著,且…

作者头像 李华
网站建设 2026/5/13 6:41:56

黑莓转型复盘:从硬件崩塌到软件重生的战略启示

1. 项目概述:一次关于科技巨头转型的深度复盘在科技行业里,看一家曾经的王者在浪潮中挣扎、转型,其过程远比看一家初创公司从零到一更富戏剧性,也更具启发性。今天想和大家深入聊聊的,就是这样一个经典案例&#xff1a…

作者头像 李华
网站建设 2026/5/13 6:41:49

FPGA在物联网边缘计算中的核心价值与架构实践

1. 项目概述:当物联网遇上可编程逻辑的“意外之喜”时间拨回到2015年初,那时的科技圈正被一股名为“物联网”的热浪席卷。几乎所有的行业论坛、技术峰会和媒体头条,都在描绘一个万物互联的乌托邦:从家里的灯泡、冰箱,到…

作者头像 李华
网站建设 2026/5/13 6:41:49

稀疏注意力机制:原理、优化与应用实践

1. 稀疏注意力机制的核心价值与挑战在Transformer架构成为自然语言处理领域主流模型的今天,长上下文处理能力已成为衡量模型性能的关键指标。传统全注意力机制(Full Attention)虽然理论上能够捕捉任意位置间的依赖关系,但其计算和…

作者头像 李华