问题标签 [resthighlevelclient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
600 浏览

elasticsearch - ElasticSearch 7.6.3 Java HighLevel Rest Client:跨多个字段的自动建议 - 如何实现

我们有一个包含以下字段的索引,并且需要通过在索引中的所有文本和关键字映射字段中搜索数据来向用户提供自动建议

我已经尝试过 Completion Suggest,但它适用于 1 个字段。我在索引中创建了 2 个带有 *-suggest 的字段,并尝试使用 completionSuggest 创建建议

但它只支持 1 个字段。我将 ES 7.6.3 与 Java HighLevel Rest Client 一起使用,它适用于 1 个字段。我需要做哪些改变来支持跨多个领域。这可以通过 JSON 搜索实现吗?如果是,那么我可以使用 Xcontentbuilder 创建一个 json 并执行自动建议?

0 投票
1 回答
924 浏览

elasticsearch - 任何 java.lang.NullPointerException 时的 Mockito

我有这个必须测试的方法:

这就是我试图从我的测试课上做的事情:

我在这一行得到java.lang.NullPointerException :

知道为什么会这样吗?谢谢

0 投票
1 回答
1514 浏览

elasticsearch - Elasticsearch 分页最佳方法

我们开发了一个文件存储解决方案,它使用弹性搜索来存储有关文件的元数据,使用其余级别的客户端 java API。

我们目前通过“from”和“size”实现分页。客户打电话给我们指定大小,也可以指定页码,我们使用页码来计算偏移量或“从”。

它们也可以通过任何可以从字符串到日期、整数等命名的字段进行排序,但我们默认为创建日期

例如,从和大小导致的问题是深度分页,例如(解决方案1)

我一直在研究 searchAfter 功能并实现了这一点,所以在响应中我们返回最后一个“排序”索引值,客户端可以在后续调用中使用它来避免上述问题。例子。(解决方案 2)

这在某些情况下可以正常工作,但也给我们带来了奇怪的结果,因为我在上面提到我们允许按任何字段排序,所以例如我们有 100 个文件存储,所有“扩展”字段设置为 txt,100 个设置为 pdf,所以用户可以一个大小设置为 10 的调用并希望按“扩展名”排序,我们将它们与最后一个“排序”索引“txt”一起返回,然后在随后的 searchAfter 字段调用中使用“txt”,但这并没有不给出任何结果。

所以看起来 searchAfter 只适用于日期等字段。

我在想我们可能可以在内部存储 lastSorted 值(索引),所以回到解决方案 1,但如果 from + size > 10,000 使用最后一个排序值,它对客户端用户隐藏。我看到的唯一问题是我们可以在哪里存储最后一个排序值,并且每个搜索的最后一个排序值需要是唯一的,我可能不希望一个巨大的数据库纯粹为此而填充所有这些排序值。

想法?

谢谢,

0 投票
2 回答
4471 浏览

java - 如何使用 JAVA 高级 REST 客户端创建弹性搜索索引?

我正在阅读这些文档以从 Elastic 的高级 JAVA REST 客户端创建一个弹性搜索索引。它似乎跳过了使用我的弹性云帐户进行身份验证的步骤。有人可以指出我的相关文档吗?

我启动了我的弹性搜索实例并将端点 URL 复制到我的客户端代码中。

我最初有连接错误,现在没有。只有身份验证错误。所以,我很确定我正在使用正确的端点 URL 进行连接,并且需要以某种方式进行身份验证 - 也许使用标头。

现在,我看到了这个错误:

Elasticsearch 异常 [type=security_exception, reason=action [indices:data/write/index] 需要身份验证]

我可以使用以下命令从 Postman 毫无问题地查看我的 Elastic Search 部署的端点:GET https://:@d97215aee2.us-east-1.aws.found.io:9243

我还可以使用 Postman 的此命令创建索引... PUT https://elastic:4YQIMXfoSZ9mXPgY1fj7T5BU@d97218f74f6d48489b355dd7d665aee2.us-east-1.aws.found.io:9243/。然而,我不能从 Java 代码中做同样的事情。

这是我的 Java 代码的状态。这几乎是这些教程页面中的代码。

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-getting-started-initialization.html

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.4/java-rest-high-document-index.html

我还尝试使用我们的用户名和密码更新 URL 地址,正如这篇文章所建议的那样:ElasticSearch authentication error with ElasticCloud?

本质上,我像这样更新了我的网址......

这对我不起作用。我猜这个人没有使用新的 Elastic High Level REST 客户端。我收到了这个错误:

org.glassfish.jersey.server.internal.process.MappableException: java.io.IOException: :@d97265aee2.us-east-1.aws.found.io: IPv6 地址无效

0 投票
1 回答
487 浏览

spring-boot - Elasticsearch 高级别的客户端无法映射 geo_point

我有一个使用弹性搜索地理空间的应用程序。我正在使用 elasticsearch rest 客户端来索引和搜索文档。当我将 geo_point 字段索引到弹性时,我无法搜索它们。我遇到了一个例外。

我的项目等级;

创建索引方法;

索引映射;

并且 geopoint 字段不是 geo_point 类型。当我搜索半径跟随线的位置时;

运行上面的代码时,我得到了以下异常。我怎么了?

0 投票
1 回答
3826 浏览

elasticsearch - mget 生产:无法解析响应的响应正文

我正在通过 Java 高级 REST 客户端发出Multi-Get 请求,并且收到以下异常:

“无法解析 Response{requestLine=POST /_mget HTTP/1.1, host= http://localhost:9200 , response=HTTP/1.1 200 OK} 的响应正文”

我从发送到 Elastic 的日志中提取了以下 JSON:

我通过 Postman 将上述 JSON 发送到 Elastic,我看到了以下响应(这与我在日志中看到的相同):

这不是一个有效的回应吗?这是弹性搜索休息高级客户端的问题吗?

弹性 7.5.0,org.elasticsearch.client:elasticsearch-rest-high-level-client:7.5.2

0 投票
0 回答
100 浏览

java - ElasticSearch 使用 Java High Level Client 7.x 获取一个字段的所有值

我想使用 java 高级客户端从 elasticsearch 获取字段的所有值。

我正在使用以下代码:

如果可能的话,我想获取值 DISTINCT(例如从表中选择不同的字段)。

0 投票
2 回答
1135 浏览

java - 通过 JAVA API 将映射放入 ElasticSearch

我想通过 JAVA API 为字段映射但失败了。以下是详细信息:

我的数据结构是:

我想要做的是:将“mje-t​​est-location”类型设置为“geo_point”

我的代码片段:

错误信息:

ElasticSearch JAVA API 版本:<elasticsearch.rest.high.level.client>7.0.0</elasticsearch.rest.high.level.client>

0 投票
1 回答
68 浏览

java - 如何从 AvgAggregationBuilder 弹性搜索中获取特定键的平均值

我正在尝试使用特殊键示例从弹性搜索中获取结果:

平均工资,按城市,性别

所以我检查了metrics_aggregations

我能够

它确实返回了最高水平 - 没有特定领域的平均工资

所以我尝试使用subAggregation

但我得到以下错误

服务器错误。21525\nElasticsearchStatusException[Elasticsearch 异常 [type=aggregation_initialization_exception,reason=Aggregator [salaryAvg] 类型 [avg] 不能接受子聚合]]\n\tat org.elasticsearch.rest.BytesRestResponse.errorFromXConten

我如何使用弹性搜索查询它我想要的是与 SQL 非常相似的东西 - group by

我的弹性响应数据的每一行看起来都是这样的:

如何使用 Elastic search JAVA API 支持它?

我也试过

运行它:

我收到了这个回复

似乎有不同的平均值以及每个行的行数 - 此列表中的行但我不知道哪个“键”指向似乎是一个字节数组

但它与我拥有的实际密钥不匹配 [key] 似乎与不同的平均值重复,所以我在这里缺少什么。?

在此处输入图像描述

0 投票
1 回答
38 浏览

resthighlevelclient - 如何使用 RestHighLevelClient 6.5.0 捕获 IndexNotFoundException

我想将数据保存到es,但是在保存操作之前,我需要始终检查索引是否存在;因为restHighLevelClient's bulk 方法从不抛出任何关于 IndexNotFoundException 的异常;因此它会使性能降低。

有什么办法可以IndexNofFoundException用 restHighLevelClient SDK 捕捉?

谢谢你的一切