问题标签 [spring-data-elasticsearch]

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

java - 如何在 Spring-data-elasticsearch 中启用查询日志记录

我使用 spring-data-elasticsearch 框架从 elasticsearch 服务器获取查询结果,java 代码如下:

虽然我如何知道发送到 elasticssearch 服务器的原始 http 查询?如何启用日志记录,我尝试添加 log4j,但似乎 spring-data-elasticsearch 没有记录查询。

0 投票
1 回答
3253 浏览

java - 如何在 Spring-data-elasticsearch 中禁用页面查询

我使用 spring-data-elasticsearch 框架从 elasticsearch 服务器获取查询结果,java 代码如下:

我在服务器中获取原始查询日志,如下所示:

根据查询日志,spring-data-elasticsearch 将为查询添加大小限制。"from":0, "size":10, 我怎样才能避免它添加大小限制?

0 投票
1 回答
3135 浏览

elasticsearch - ElasticSearch 和 SpringData:FindAll 和 OrderBy

我需要获取由某个领域(parent在我的情况下)订购的所有文件。

在我的ItemRepository我添加了以下签名:

但是通过调用它,我得到了一个

相同的延迟AscDesc方法名称。

在某处我读到正确的语法应该如下(注意后面的额外内容ByfindAll

在这里我得到一个

我排除了其他问题,因为声明像 public List<Item> findByNameOrderByParent();everithing 这样的方法可以正常工作。

你有想法继续吗?

谢谢

0 投票
2 回答
2134 浏览

java - 运行两个连续的 java 测试时出现 Elasticsearch NumberFormatException

我在一个类中有两个测试,每个测试都包含以下查询:

在其中一项测试中,结果的数量elasticsearchTemplate.count(searchQuery, Article.class),在另一项中,验证返回值elasticsearchTemplate.queryForPage(searchQuery,Article.class)

如果我分别运行这两个测试中的任何一个,测试总是通过,一切似乎都很完美。 如果我因此同时运行这两个测试,一个接一个,第一个通过,另一个失败并出现SearchPhaseExecutionException:无法执行阶段...嵌套:NumberFormatException [对于输入字符串:“2015-02-01T00: 02:02.396Z"]...

更奇怪的是,这种行为仅在应用了 publishDate 的范围过滤器(具有类型:FieldType.Date)时才会出现。因此,当使用 boolFilter、termFilter 等其他类似查询时,所有测试都通过。

此外,如果我在同一个方法中运行这两个查询:不会引发异常。

我认为不正确的缓存初始化/清理可能会导致这种行为......但是,为什么其他查询也不会发生?

此外,在类的 @After 方法中,我删除了所有索引 (elasticsearchTemplate.deleteIndex(Article.class)),在 @Before 方法中,我执行/重做批量索引和刷新。

我走错路了吗?我在这里想念什么?

完整的堆栈跟踪:

文章索引的映射:

0 投票
0 回答
2484 浏览

elasticsearch - Spring data elasticsearch 多字段查询产品

ES新手,抱歉这个愚蠢的问题。

我一直在尝试为products索引创建弹性搜索查询。我可以查询它,但它永远不会像我预期的那样返回。

我可能以错误的方式使用查询构建器,尝试了各种查询构建器,但从未按我预期的那样工作。

我的产品类(为了这个问题更简单):

类别nas nameid我用于聚合

布尔字段用于过滤器。

ProductNameProductUrl都有一个String localeString nameString url相应

我目前正在使用以下逻辑构建我的查询

问题是很多产品没有匹配,例如:

查询“andro”不返回“android”产品。

我错过了什么?这种构建查询的方式正确吗?

更新 添加names我的产品映射的一部分:

0 投票
1 回答
2658 浏览

elasticsearch - spring-data-elasticsearch 搜索不同的实体/索引

我需要提供允许用户搜索许多不同的域元素并将结果作为组合列表查看的功能。因此,在 UI 中,他只需要填写一个文本字段即可检索结果。

为了可视化,假设我在域中有 3 个实体:

现在我想我可以达到这样的要求:

但是当调用第二个函数 - 负责返回实际文档的函数时,会引发以下异常:

无法识别索引名称。GlobalSearchDTO 不是文档。确保使用 @Document(indexName="foo") 注释文档类

我尝试将任何域实体作为类参数传递,但我只从相应索引中检索元素,而不是全部。例如调用:

仅从“商店”索引中检索元素。似乎由于某种原因没有使用动态提供的索引。

所以问题是:是否有可能检索这样的数据?为什么指定 '.withIndices("car", "garage", "shop")' 是不够的?

也许我应该考虑其他解决方案,例如:

  1. 在循环中搜索索引(一个接一个),连接结果并按分数排序

  2. 使用“globalsearch”索引创建单独的 GlobalSearch 实体并
    在那里复制数据

提前致谢!

克日什托夫

0 投票
0 回答
1126 浏览

spring-data - 在具有相同域对象的同一应用程序中使用 Spring Data JPA 和 Spring Data Elastichsearch

我有一个 Spring Boot 应用程序,它利用 Spring Data JPA 来实现基于 REST 的服务。现在我希望使用 Spring Data ElasticSearch 添加全文搜索功能。我正在使用 Spring 中所有内容的最新版本。

我在互为兄弟的不同包中定义了 JPA 存储库和 ElasticSearch 存储库,example.repository.jpa 和 example.repository.es。我已经标记了 ElasticSearch 存储库,@RepositoryRestResource(exported = false)因为我不希望通过 REST 公开 ES 内容。

ES 存储库被定义为一个扩展的接口,其中ElasticsearchRepository<Domain, Long>没有任何其他内容。

我遇到的问题是,当我启动应用程序时,Spring Data Rest 似乎很困惑,并且不知何故失去了它应该公开 JPA 存储库的事实。我试过设置

@EnableJpaRepositories("example.repository.jpa") @EnableElasticsearchRepositories(basePackages = "example/repository/es")

在主应用程序类上以尝试缩小配置,但没有任何效果。

Domain 对象被标记为@Entityand@Document并且是一个相当简单的 POJO。

有没有人在同一个应用程序中成功地将 Spring Data JPA 和 Spring Data Elasticsearch 与同一个域对象一起使用?有没有人可以分享或指向我的任何示例代码/配置?这甚至是正确的方法吗?

0 投票
1 回答
86 浏览

spring - @Query 在 ElasticSearch Spring java 框架中被忽略

我在 Spring 中定义了这个接口,用于查询 Elascticsearch。我添加了@Query 注释来完成一些过滤。

@Query 注释被完全忽略。如您所见,我尝试对姓氏进行硬编码,但这对查询结果没有影响。如果我删除查询字符串中的大括号,我不会收到任何错误。查询仍然有效,过滤被忽略,它返回所有匹配项。

有人可以帮我弄清楚我在这里做错了什么。

0 投票
1 回答
1878 浏览

elasticsearch - Spring Data REST 似乎不适用于 elasticsearch

我正在尝试将 Spring Data REST 用于弹性搜索。POST 的内置 REST 控制器似乎无法正常工作:当我尝试发布文档时出现错误。这个问题很容易重现:我创建了一个简单的实体:

存储库:

当我尝试获取所有用户时,我得到了响应:

但是当我尝试添加用户时:

我收到一个错误:

似乎为此问题打开了一张 Jira 票,没有任何评论: Jira Issue

我想知道是否可以避免为 Spring Data Elasticsearch 编写 CRUD REST 控制器?

0 投票
1 回答
948 浏览

java - ElasticsearchRepository 动态索引名称

在我的项目中,当我的班级正在扩展 ElasticsearchRepository 时,我正在使用 ElasticsearchRepository。

有没有办法动态更改 indexName 属性,我不想使用@Document,因为我的 indexName 是动态的?