问题标签 [elasticsearch-rest-client]

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 投票
1 回答
57 浏览

elasticsearch - Elasticsearch Java HighLevelRestClient如何创建not_analyzed索引?

我正在使用 HighLevelRestClient 7.4.0,我很好奇在使用 Index API 索引文档时如何创建 not_analyzed 字段。

问题是我正在尝试按标题实现电影搜索,如果我搜索“矩阵”,它会返回正确的结果,但如果我搜索“矩阵”,它会返回几乎所有包含“the”的电影标题(matchQuery 就是这种情况)。

我改为使用 termQuery,但现在当我搜索“矩阵”时,它返回正确的结果,当我搜索“矩阵”时,它什么也没找到,“矩阵”也是如此。

我猜问题是当我索引我的文档时,默认情况下会分析每个文本字段。如何创建 not_analyzed 索引?

现在我通过简单地将数据结构转换为带有 GSON 的 Json 来索引电影。

0 投票
1 回答
1036 浏览

java - 从 Pub/Sub 到 ElasticSearch 的 Apache Beam 流式传输

我正在使用 Apache Beam 编写一个 java 流管道,它从 Google Cloud PubSub 读取消息,并将它们写入 ElasticSearch 实例。目前,我正在使用直接运行器,但计划是在 Google Cloud Dataflow 上部署解决方案。

首先,我编写了一个从 PubSub 读取并写入文本文件的管道,它可以工作。然后,我坐了 ElasticSearch 实例,这也有效。我用 curl 写了一些文档,这很容易。

然后,当我尝试使用 Beam 的 ElasticSearch 连接器执行写入时,我开始遇到一些错误。实际上,我得到ava.lang.NoSuchMethodError: org.elasticsearch.client.RestClient.performRequest了,尽管我添加了对 pom.xml 文件的依赖项。

我正在做的基本上是这样的:

使用 DirectRunner,我可以连接到 PubSub,但是当管道尝试连接 ElasticSearch 实例时出现异常:

我在 pom.xml 中添加的是:

我被这个问题困住了,我不知道如何解决它。如果我使用 JestClient,我可以毫无问题地连接到 ElasticSearch。

你有什么建议吗?

0 投票
0 回答
208 浏览

elasticsearch - ElastifcSearch UpdateByQueryRequest 从 6.2 到 7.4.2

我必须将我们的 ES 从 6.2(TCP 客户端)升级到 7.4.2(REST API)

而且我有一点问题UpdateByQueryRequestBuilder,看起来需要更改为UpdateByQueryRequestdoc)。旧代码如下所示

正如我所写,我理解UpdateByQueryRequestBuilder(使用最旧的客户端)应该被替换,UpdateByQueryRequest 但是这个新的 API 没有filter方法(只是setQuery将替换当前的查询在链式案例中......)

那么问题来了,我应该如何用最新的 ES REST API 替换这段代码(或链接查询)?

0 投票
0 回答
305 浏览

java - 从 6.8.X 升级到 7.5.X 时从 RestHighLevelClient 获取 Elasticsearch TotalHits

我正在将我的 Elasticsearch 集群从 6.8.X 升级到 7.5.X。我有这个突破性的变化;基本上在 REST 响应中,有一个{hits: {total: { value: 123 } } }对象而不是一个{hits: { total: 123 } }int 值。

Elasticsearch 提供了一个可以添加到搜索中的参数rest_total_hits_as_int;但是,我无法弄清楚如何在由它们的 javaRestHighLevelClient或它们的SearchRequest对象格式化的查询上设置它。(我目前正在使用 ES 6.8.0 库。)

当我从 6.8 客户端向 7.5 集群发送请求时,我总是得到0总点击数。当我从 7.5 客户端向 6.8 集群发送请求时出现错误。(不向后兼容。)

是否有我缺少的迁移路径?

0 投票
0 回答
122 浏览

spring-boot - 通过 Elasticsearch REST 客户端对文档进行索引时引发错误

我正在使用带有 Elasticsearch REST 高级客户端的 Spring Boot 应用程序。在已创建的索引中索引文档时customer,我面临以下问题:

java.lang.IncompatibleClassChangeError: Found interface org.elasticsearch.common.bytes.BytesReference, but class was expected

我正在使用以下代码索引文档:

在这行代码中抛出了上述错误:

IndexResponse indexResponse = client.index(indexRequest, RequestOptions.DEFAULT);

错误的堆栈跟踪是:

0 投票
1 回答
415 浏览

java - 使用 ES Java API v7.x 编写弹性搜索过滤器搜索

我尝试使用弹性搜索 Java API 7.6版编写过滤器查询

但是没有关于如何编写过滤上下文搜索的好文档。

任何人都知道如何为以下内容编写 Java API:

0 投票
1 回答
817 浏览

elasticsearch - 如何在 elasticsearch-6.4.0.jar 中使用 Count API 获取匹配数据的数量

我需要使用 REST API 从 ElasticSearch 中获取匹配数据的数量。目前我正在使用 elasticsearch-6.4.0.jar 来编写 API。不幸的是,我在这个版本中找不到 CountAPI。

此外,我尝试使用旧版本的 jar (elasticsearch-2.4.0.jar)。在那里我可以看到 CountRequest 和 CountResponse 类。这个类帮助我们获取计数。

但是 2.4.0 是非常旧的版本。因此,您能否帮我在 elasticsearch-6.4.0.jar 中找到已弃用的版本

0 投票
1 回答
1714 浏览

spring-boot - 如何在 Spring Boot 中编写以下弹性搜索通配符查询?

数据库:弹性搜索

字段名称:“标签”

数据类型:字符串

问题:如何在tag带有通配符的字段中执行搜索?

我尝试了以下(在 Kibana 中):

用户要求:{ "tag" : [ "Attendance", "Employee" ] }

这很成功,但我不知道如何在 Spring Boot 中执行相同的操作。

我与以下人员一起工作:

但这只是针对单个字段,我需要一个动态字段,其中用户输入的大小和值应该不同。

有人可以指导我吗?

0 投票
1 回答
312 浏览

java - 使用 RestClient 从 Scala 中的 elasticsearch 中删除文档

我正在尝试从年龄(索引的字段)大于 50 的索引中删除文档。所以基本上我正在尝试编写范围查询。我已经从 Scala 成功连接到 ElasticSearch,而且我还可以删除整个索引。但我无法编写范围查询。有人可以帮我写一个范围查询,以从 scala 的索引中删除文档。下面是我删除整个索引的代码片段。我在 Java 中看到了很多示例,但我需要 SCALA 中的解决方案。

0 投票
2 回答
1106 浏览

java - 在 Spring Boot 中找不到 Elasticsearch 方法

我已经被这个问题困扰了一段时间,感谢您提供任何帮助。我正在运行2.2.0带有 ElasticSearch 高级 REST 客户端版本的Spring Boot 版本,6.4.3并使用3.2.0Spring-Data-Elasticsearch 版本的版本。我收到以下错误。我尝试了以下尝试来修复,但没有一个。

  1. 多次更改 Spring Boot 版本
  2. 多次更改 ES 版本
  3. 我已经清除了我的 .m2 文件夹并多次重新下载了 maven 依赖项。

我在下面遇到的问题是

试图调用不存在的方法。尝试是从以下位置进行的:

org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.putMapping(ElasticsearchRestTemplate.java:292)

以下方法不存在:

org.elasticsearch.client.IndicesClient.putMapping(Lorg/elasticsearch/action/admin/indices/mapping/put/PutMappingRequest;Lorg/elasticsearch/client/RequestOptions;)Lorg/elasticsearch/action/support/master/AcknowledgedResponse;

该方法的类 org.elasticsearch.client.IndicesClient 可从以下位置获得:

jar:file:/Users/user/.m2/repository/org/elasticsearch/client/elasticsearch-rest-high-level-client/6.4.3/elasticsearch-rest-high-level-client-6.4.3.jar! /org/elasticsearch/client/IndicesClient.class

它是从以下位置加载的:file:/Users/user/.m2/repository/org/elasticsearch/client/elasticsearch-rest-high-level-client/6.4.3/elasticsearch-rest-high-level-client- 6.4.3.jar

行动: 更正您的应用程序的类路径,使其包含一个兼容的 org.elasticsearch.client.IndicesClient 版本

我的POM在下面

任何帮助表示赞赏。我确信它必须处理兼容性问题,但不确定是哪个。谢谢大家!

更新

通过将我的 elasticsearch 版本更改为6.7.0. 但现在我收到以下错误

我的 POM 现在也如下所示。