
Elasticsearch是一个基于Apache Lucene的分布式、高扩展、高实时的搜索与数据分析引擎。它的核心能力在于能对各种类型的数据(文本、数值、地理空间等)进行高效的全文检索、结构化查询和实时分析,并支持PB级数据的近实时查询。
在Agent开发中,Elasticsearch不仅可以作为提供上下文知识的“记忆库”和“思考引擎”,甚至还能作为构建Agent本身的“编排框架”。使用es做语义匹配,进行缓存用户提问和模型回答,这样不仅可以提高响应速度,还可以减少调用大模型的次数,减少token的使用。
二,怎样在项目使用ES
1,在本地使用es步骤也较简单,它和redis,nacos这样的插件使用差不多,但有些细节需要注意。
先下载符合自己电脑版本的压缩包,直接使用下述网址即可,
https://mirrors.huaweicloud.com/elasticsearch/这里作者选择的是9.x版本的,建议大家选择8.x以上的,因为在该版本下可以更好支持语义匹配
2,修改yml配置文件以及jvm参数

建议修改以下参数
# ==================== 集群与节点名称 ====================# 集群名称,同一个集群内的节点必须一致,单节点场景可随意命名cluster.name: askdata-cluster# 节点名称,建议每个节点不同以便在监控中区分node.name: node-1# ==================== 路径配置 ====================# 数据存储路径。强烈建议改为SSD的绝对路径,提升索引和检索性能#注意对应的路径的替换path.data: C:\\elasticsearch-9.x.x\\data# 日志存储路径path.logs: C:\\elasticsearch-9.x.x\\logs# ==================== 网络与发现配置 ====================# 绑定地址,设置为 0.0.0.0 可允许局域网内其他机器访问network.host: 127.0.0.1# HTTP 服务端口,默认 9200http.port: 9200# 单节点模式:跳过集群发现,避免启动时因找不到其他节点而报错discovery.type: single-node# ==================== 安全配置(开发环境)====================# 为安全起见,ES 8.x 默认开启安全认证# 以下配置将关闭 SSL 加密,并使用 HTTP 进行通信,适用于本地开发调试# 本地开发关闭密码检验xpack.security.enabled:falsexpack.security.enrollment.enabled: falsexpack.security.http.ssl.enabled: falsexpack.security.transport.ssl.enabled: false
在正常情况下我们直接点击启动文件就可以了

3,重新编写启动脚本
如果上述启动出现下面报错,其实是正常的
D:\springCloud\elasticsearch-9.1.3\bin>elasticsearch-reset-password -u elastic -iwarning: ignoring JAVA_HOME=C:\JDK17; using bundled JDKERROR: Failed to determine the health of the cluster., with exit code 69D:\springCloud\elasticsearch-9.1.3\bin>
出现这个错误的原因是:es启动后会先扫描我们系统的jdk配置,绝大部的Java程序员都会将常用jdk放在系统环境变量中,而es在使用我们系统中的jdk时发现少了dt.jar(dt.jar 全称为 “deployment tools jar”,它是 Java 标准库的一部分,包含了 Java 桌面应用程序开发所需的类和资源。)就会出现上述错误。
为了绕开es启动先扫描系统的jdk而不是优先使用自带的jdk,作者直接给出最快的解决方法-----重新编写一个启动脚本

在es文件夹建立该文件,注意要以.bat(windows系统)文件后缀命名,编辑以下内容:
@echo offrem ==========================================================rem Elasticsearch 专用启动脚本rem 作用:临时清除 JDK17 相关的环境变量,确保 ES 启动过程rem 不会去检查 dt.jar,同时使用 ES 自带 JDK。rem 使用方法:直接双击本脚本,或在本脚本所在目录下打开 CMD 执行。rem ==========================================================echo [INFO] 正在准备 Elasticsearch 启动环境...rem 1. 强制指定 ES 使用自带的 JDKset "ES_JAVA_HOME=%~dp0jdk"rem 2. 清空可能干扰的 JAVA_HOME(仅当前进程有效)set "JAVA_HOME="rem 3. 从 PATH 中移除所有 C:\JDK17 相关的路径(避免被扫描到)set "PATH=%PATH:C:\JDK17\bin;=%"set "PATH=%PATH:C:\JDK17\bin=%"rem 4. 同时移除其他可能遗留的 Java 路径变量set "JRE_HOME="set "JDK_HOME="set "CLASSPATH="rem 5. Force JVM heap size to 512MB (overrides jvm.options)set "ES_JAVA_OPTS=-Xms512m -Xmx512m"echo [INFO] 环境已清理,正在启动 Elasticsearch 9.x ...echo.rem 进入 ES 的 bin 目录并启动cd /d "%~dp0bin"call elasticsearch.batecho.echo [INFO] Elasticsearch 已退出。pause
这样直接点击自己编写的启动文件可以正常启动了,
rem 5. Force JVM heap size to 512MB (overrides jvm.options)set "ES_JAVA_OPTS=-Xms512m -Xmx512m"
上述配置的这段内容就已经修改了es的jvm参数,因为es会同时使用内存和硬盘存储数据,因为不进行设置,es会大量使用内存,这样大大影响我们电脑整体的响应速率。

夜雨聆风