当前位置: 首页 > news >正文

ES+索引库文档操作

1. es简介

        Elasticsearch是一个基于Lucene构建的开源、分布式、RESTful搜索引擎,广泛用在日志数据分析,实时监控等领域,擅长于海量数据的搜索、分析、计算

核心特点

  1. 分布式架构:自动分片、复制数据,提供高可用性

  2. 近实时搜索:数据几乎可立即被搜索到

  3. 全文检索:强大的文本分析能力

  4. RESTful API:简单易用的HTTP接口

  5. 多语言支持:官方提供Java客户端,与Java生态完美集成

倒排索引

        倒排索引(Inverted Index)是搜索引擎(如Elasticsearch、Lucene)的核心数据结构,用于快速查找包含某个词项的文档。

  • 传统索引(正排索引):文档ID -》 文档内容(如数据库按ID查数据)

  • 倒排索引:词项(Term) -》 文档ID列表(实现高效全文检索)

倒排索引构建过程

假设有以下3个文档:

  • Doc1: "Java is a programming language"

  • Doc2: "Elasticsearch is built on Java"

  • Doc3: "Java and Python are popular"

(1) 分词(Tokenization)

先对文档进行分词(使用分析器Analyzer,如standard):

  • Doc1 → ["java", "is", "a", "programming", "language"]

  • Doc2 → ["elasticsearch", "is", "built", "on", "java"]

  • Doc3 → ["java", "and", "python", "are", "popular"]

(2) 构建词项→文档的映射

词项(Term)

文档ID列表(Posting List)

Java[Doc1, Doc2, Doc3]
elasticsearch[Doc2]
python[Doc3]
......

(3) 存储额外信息(提升查询效率)

  • 词频(TF, Term Frequency):该词在文档中出现的次数(影响相关性评分)

  • 位置(Position):词在文档中的位置(用于短语查询,如"Java programming"

  • 偏移量(Offset):词的字符偏移(用于高亮显示)

2. es下载安装

win版下载官网:Download Elasticsearch | Elastic

        找到es下载安装bin路径,双击elasticsearch.bat启动

        启动的时候可能会遇到两个问题,解决方法如下:

2.1 访问问题

        找到config目录下的elasticsearch.yml文件,点开后,将这几个配置都改成false,保存后重新运行

         成功访问✌

2. 内存占用量问题

        因为es运行需要占用很大内存,内存容易出现自己死机的情况,所以可以通过修改内存占用量避免这种问题发生, 找到config目录下的jvm.options文件,点开后修改内存占用量,保存后重新运行

3. kibana下载

        kibana是es操作的图形化工具,kibana是基于Node.js运行的,如果没有安装node.js需要安装一下node.js,Download Kibana Free | Get Started Now | Elastickibana安装网址:Download Kibana Free | Get Started Now | Elastic

需要注意的是,kibana版本一定要和es版本相同,精确到小版本!

        在kibana 安装目录下的kibana.bat,双击运行,启动时间比较长,大家耐心等待运行成功,登录网址http://localhost:5601/访问。

       进入到 Dev Tools,就可以图形化编写代码了

4.分词器

        分词器是用来处理中文分词的,有一些词组可以通过分词器配置,大家可以自行下载中文分词器,将下载好的分词器,复制粘贴到plugins目录下

        重启kibana,构建分词

        同时也可以扩展分词器的词库,修改config目录中的IKAnalyzer.cfg.xml文件

5. 索引库操作

        ES中通过Restful请求进行索引库操作,文档操作,创建索引库和mapping的DSL语法如下:

  •  创建数据类型
PUT /ityang
{"mappings": {"properties": {"age":{"type": "short"},"weight":{"type": "text","analyzer": "ik_smart"},"name":{"properties": {"xingming":{"type":"keyword"},"sex":{"type":"text","analyzer":"ik_max_word"}}}}}
}
  • 查询

  • 删除,修改
# 查询
GET /ityang# 删除
DELETE /ityang# 修改
PUT /ityang/_mapping
{"properties":{"idAD":{"type":"keyword"}}
}

6. 文档操作

  • 增加/删除/查询/修改 文档数据
# 新增数据
POST /ityang/_doc/1
{"age":18,"weight":100,"name":{"xingming":"百度","sex":"男"}
}# 查询
GET /ityang/_doc/1# 删除
DELETE /ityang/_doc/1# 修改
# 全量修改 -- 删除原来的文档,添加新文档
PUT /ityang/_doc/1
{"age":20,"name":{"xingming":"百度www"}
}

7. Java进行ES文档操作

        Elasticsearch(ES)提供 RESTful API 和 Java High-Level REST Client 进行文档操作。

我推荐大家一个博主写的一篇文章,叫《Elasticsearch掰开揉碎第12篇java操作ES常用API》,链接是这个:Elasticsearch掰开揉碎第12篇java操作ES常用API_走不完的路,看不完的书!的技术博客_51CTO博客

大家可以去看一下~

相关文章:

  • JavaScript 将一个带K-V特征的JSON数组转换为JSON对象
  • Spring Cloud 原生中间件
  • Spring Cloud Alibaba 中间件
  • rt-thread的红外遥控开源库使用(裸机版本)记录.
  • Flutter 与原生技术(Objective-C/Swift,java)的关系
  • 【MFC】编辑框、下拉框、列表控件
  • 位运算详解之异或运算的奇妙操作
  • org.springframework.cloud.openfeign 组件解释
  • Spring Framework 执行链路设计
  • 大模型笔记1:大致了解大模型
  • MLLM常见概念通俗解析(五)
  • 【Redis】Redis的启航之路:Ubantu操作系统下安装Redis
  • ABP vNext 多语言与本地化:动态切换、资源继承与热更新
  • 微信小程序使用图片实现红包雨功能
  • error:MISCONF Redis is configured to save RDB snapshots
  • 计算机网络-自顶向下—第五章数据链路层重点复习笔记
  • 《高并发系统性能优化三板斧:缓存 + 异步 + 限流》
  • Nginx+keepalived主从,双主架构
  • git-build-package 工具代码详细解读
  • Git常用命令摘要
  • 网站维护成本/百度收录提交入口网址
  • 网站 html/应用商店关键词优化
  • 政府网站建设自查/网络产品运营与推广
  • 普升高端品牌网站建设/做外贸推广
  • 滨海专业做网站/企业短视频推广
  • 简单网页代码html作业/搜索关键词优化