java - spring elasticsearch:如何将Map另存为索引中的字符串?

标签 java spring elasticsearch spring-data-elasticsearch

我面临索引问题。
在我的Spring文档中,我有一张 map 。该 map 可以包含数千个数据,因为我保存了历史记录。

private NavigableMap<String, Integer> installHistory = new TreeMap<>();
在 Elasticsearch 中,我 map 中的所有数据都是索引,并且出现了极限执行错误。
enter image description here
如何不对Map中的所有数据建立索引?
我使用spring 2.2和spring Elasticsearch 3.2.4
提前致谢。
编辑:
我升级到spring数据 flex 4.0.1以使用FielType.Flattened,但是spring数据 flex 4.0.1支持minsearch版本的Elasticsearch7.6.X。我的版本是7.4,我无法更改,因为它是aws提供的最新版本。
我将字段设为 transient ,并为此Map创建了String属性。保存对象之前,我将 map 转换为列表并将其放入String变量。

最佳答案

将 map 转换为以 map 键作为属性,将 map 值作为值的JSON对象。因此,您最终存储了具有数千个属性see the Elasticsearch documentation about this的对象。
您可以使用FieldType.Flattened声明installHistory的类型
编辑:
我想念您正在使用Spring Data Elasticsearch3.2.x。在4.0中增加了对扁平字段类型的支持。
最好的办法可能是将Map属性转换为成对或Tupel列表,其中每个对包含 map 中的键/值对。

关于java - spring elasticsearch:如何将Map另存为索引中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62797032/

相关文章:

java - Spring @Order(Ordered.HIGHEST_PRECEDENCE) 不能确保 spring 首先运行

java - Spring Boot 覆盖其他应用程序文件中的属性

elasticsearch - 追加到嵌套对象字段

elasticsearch - 如何在elasticsearch中控制和轮换存储数据

java - Jodatime IllegalInstantException 异常

java - 如何在java appengine中将代码与html分离?

java - 比较 Java 中列表映射中的每个对象

javascript - 将参数从 .js 文件传递​​到 Controller

elasticsearch - ElasticSearch 的雪球过滤器中的 German vs. German2

java - 将通用数组列表添加到数组列表