当前位置:首页 » 编程语言 » javaelasticsearch

javaelasticsearch

发布时间: 2025-05-21 04:19:57

‘壹’ Elasticsearch:如何使用 java 对索引进行 ES|QL 的查询

在本文中,我们将探讨如何使用Java对Elasticsearch执行ES|QL查询。为了简化理解,所有代码已整理并置于GitHub(链接:GitHub - liu-xiao-guo/elasticsearch-java-esql),这是一个Maven项目。运行项目所需的命令为:

首先,确保安装了Elasticsearch及Kibana(参考链接进行安装)。特别注意,ES|QL仅在Elastic Stack 8.11及以上版本中可用,需下载对应版本进行安装。首次启动Elasticsearch时,记录输出中的密码用于后续配置。

准备数据集时,从先前文章下载数据集,并注意数据字段可能与文章中描述的不同。选取10个数据样本,并将其链接放置于此。克隆项目后,可见包含数据集的sample.csv文件。数据样本如下:

数据集字段重新命名,示例文档如下。

配置项目时,需编辑application.conf文件以适应具体设置,包括Elasticsearch访问地址、数据集路径及证书。为访问Elasticsearch,请申请API密钥。至此,配置基本完成。

在项目中,首先根据CSV格式字段创建Book.java类,对应数据集中的字段。阅读EsqlArticle.java文件,读取application.conf配置并创建Elasticsearch访问客户端。在客户端配置下,删除或创建books索引,定义索引映射(year为short类型,ratings为浮点数,其他为text字段)。使用Jackson CSV映射器配置文件读取,优化文档摄取,索引速度极快。

接下来,提取书籍信息。假设目标为['Julie Strain'],需注意在摄入文档时未针对author进行处理。当前ES|QL版本中,所有text字段作为keyword字段,全文搜索尚未完全实现。查询结果展示,通过ObjectsEsqlAdapter忽略ES|QL查询的JSON结果,返回熟悉的书籍列表。对于习惯SQL查询和JDBC接口的用户,客户端提供ResultSetEsqlAdapter,以相同方式使用,返回java.sql.ResultSet。示例中,找出Plympton PressIntl出版评分最高的书籍,结果可见于GitHub项目。

通过遵循本文所述步骤及代码示例,您将能够熟练使用Java对Elasticsearch执行ES|QL查询。

‘贰’ ElasticSearch JVM配置

Elasticsearch是基于Java构建的,需要至少 Java8 来运行它。只支持Oracle的Java和OpenJDK。所有Elasticsearch节点和客户机都应该使用相同的JVM版本。

我们推荐您安装Java1.8.0_131版本或者Java 8发行版系列的后续版本。我们推荐您使用 LTS JAVA 版本。如果使用了已知的糟糕的Java版本,Elasticsearch将拒绝启动。

Elasticsearch将使用的Java版本可以通过设置JAVA_HOME环境变量进行配置。

默认情况下,Elasticsearch告诉JVM使用最小和最大大小为1 GB的堆。 在转移到生产环境时,重要的是配置堆大小,以确保Elasticsearch有足够的可用堆。

Elasticsearch将通过Xms(最小堆大小)和Xmx(最大堆大小)设置分配在jvm.options文件中指定的整个堆。

这些设置的值取决于服务器上可用RAM的数量。好的经验法则是:

显示启用了从零开始的压缩oops而不是:

下面是如何通过jvm.options文件设置堆大小的例子:

还可以通过环境变量设置堆大小。这可以通过注释掉jvm.options文件中的Xms和Xmx设置来实现并通过ES_JAVA_OPTS设置这些值:

注意: 为Windows服务配置堆与上述配置不同。Windows服务最初填充的值可以如上配置,但在安装服务之后会有所不同。有关更多细节,请参阅 Windows服务文档 。

默认情况下,Elasticsearch配置JVM将堆从内存溢出异常转储到默认数据目录(/var/lib/elasticsearch是针对RPM和Debian包发行版的,Elasticsearch安装根目录下的data目录是针对tar和zip存档发行版的)如果此路径不适合接收堆转储,则应修改条目 -XX:HeapDumpPath=… 在jvm.options文件中。如果指定目录,JVM将根据运行实例的PID为堆转储生成一个文件名。如果指定的是固定文件名而不是目录,那么当JVM需要对内存溢出异常执行堆转储时,文件必须不存在,否则堆转储将失败。

默认情况下,Elasticsearch启用GC日志。这些都是在jvm.options中配置的和默认设置到与Elasticsearch日志相同的默认位置。默认配置每64 MB旋转日志一次,最多可以消耗2 GB的磁盘空间。

默认情况下,Elasticsearch配置JVM将致命错误日志写入默认日志目录(/var/log/elasticsearch是RPM和Debian包发行版的,Elasticsearch安装根目录下的logs目录是针对tar和zip存档发行版的)。这些日志是JVM遇到致命错误(例如,分割错误)时生成的。如果这个路径不适合接收日志,您应该在jvm.options文件中修改条目 -XX:ErrorFile=… 为一个替代路径。

热点内容
云存储ia 发布:2025-05-21 08:09:15 浏览:127
php去除空格和换行符 发布:2025-05-21 08:08:22 浏览:344
php数组排序按值 发布:2025-05-21 08:06:17 浏览:57
shell监控脚本 发布:2025-05-21 08:02:43 浏览:264
全面数据库 发布:2025-05-21 07:53:25 浏览:548
我的世界找到好友的服务器 发布:2025-05-21 07:51:08 浏览:506
传奇如何建立服务器 发布:2025-05-21 07:46:38 浏览:358
计算机运行时有临时存储吗 发布:2025-05-21 07:38:32 浏览:714
java的加密算法 发布:2025-05-21 07:36:56 浏览:556
航海王燃烧意志黄猿应该怎么配置 发布:2025-05-21 07:28:09 浏览:685