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

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博客

大家可以去看一下~

http://www.xdnf.cn/news/14218.html

相关文章:

  • [CVPR 2025] DiCo:动态协作网络助力半监督3D血管分割新突破
  • AI Agent实战 - LangChain+Playwright构建火车票查询Agent
  • 人工智能学习28-BP过拟合
  • [k8s]--exec探针详细解析
  • java常见第三方依赖以及相关安全问题
  • http1.x VS http2.x 协议
  • Spring Cloud Alibaba 中间件
  • 硬编码(修改RIP相关指令)
  • HTML+CSS 半透明登录框
  • (LeetCode每日一题) 2566. 替换一个数字后的最大差值 ( 贪心 )
  • 安防市场的中小企业突围——从竞品分析到破局路径的思考
  • Spring Boot中Controller层规划与最佳实践详解
  • 【北京迅为】iTOP-4412精英版使用手册-第二十一章 延时函数专题
  • Python爬虫-批量爬取快手视频并将视频下载保存到本地
  • BeckHoff PLC --> 料筐(KLT Box)自动对中与抓取程序分析
  • Deep Research Agent的深度与广度如何保证
  • OSGI 是什么,有哪些具体应用、java8、9、10、11比较
  • C++操作系统与网络编程(针对特定岗位)
  • SpringBoot打包运行原理和加载机制原理
  • 从大数据到大模型:我们是否在重蹈覆覆辙
  • 一文详解前缀和:从一维到二维的高效算法应用
  • Java相关-链表-设计链表-力扣707
  • JS进阶 Day02
  • 在tensorrt engine中提高推理性能小记
  • 互联网大厂Java求职面试:云原生架构与微服务设计中的复杂挑战
  • Flask文件上传与异常处理完全指南
  • create_react_agent + MCP tools
  • TDengine 如何从 2.x 迁移到 3.0
  • Java并发编程实战 Day 22:高性能无锁编程技术
  • JAVA关键字-final