java - 如何在elasticsearch中创建不同的文档但ID相同

标签 java spring elasticsearch spring-data-elasticsearch

假设我有 10 个具有一些字段的对象实例。其中一个字段指定 ID。另外两个字段包含有关位置的数据(纬度和经度)。一个字段包含日期时间信息。

在这 10 个实例中,ID 保持不变,但与日期时间和位置相关的字段发生变化。

Instance1 = id - 123; lat - 58.00; lon - 16.00; date - 2017-07-11 12:19:00
Instance1 = id - 123; lat - 60.00; lon - 17.00; date - 2017-07-11 12:29:00
Instance1 = id - 123; lat - 62.00; lon - 18.00; date - 2017-07-11 12:39:00
Instance1 = id - 123; lat - 64.00; lon - 19.00; date - 2017-07-11 12:49:00
Instance1 = id - 123; lat - 66.00; lon - 20.00; date - 2017-07-11 12:59:00

以上数据为虚拟数据。但你可以观察到 id 保持不变,只是位置和时间发生了变化。

使用 java、spring-data-elasticsearch 我可以将信息放入 Elasticsearch 中。

我面临的问题是,在 Elasticsearch 中创建的文档总数为 1。

首先创建一个 id 为 123 的文档,然后该文档被更新 9 次。所以最终文档的 _version 为 10。

如何在 Elasticsearch 中创建 10 个具有相同 id 的不同文档。

另外需要注意的是,这些字段并不存在于同一个类中,实际的数据对象相当复杂,但作为一个整体,数据对象将具有这些字段。此外,数据对象可以有不同类型的实例,但这些字段将存在。

如果这些字段存在于同一个类中,那么我可以使用这些字段来生成哈希码,以便生成唯一的哈希码,从而将其用于 ID。

请有人建议我如何实现创建不同的文档...或单个文档但在 Elasticsearch 中有 10 个子实例。

谢谢

最佳答案

来自documentation

_id field Each document has an _id that uniquely identifies it, which is indexed so that documents can be looked up either with the GET API or the ids query.

Spring会将类中的id映射到elasticsearch文档中的_id。

_id 在elasticsearch 中扮演着非常具体的角色,无法适应所描述的功能。 我建议您使用不同的字段名称,例如 InstanceId。在这种情况下,不同文档中可能具有相同的值。

关于java - 如何在elasticsearch中创建不同的文档但ID相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47773800/

相关文章:

java - 如何根据大小拆分 ORC 文件?

angularjs - IE 在使用 NTLM 身份验证时随机发送空 POST 正文(使用 Angular 到 Spring)

java - 使用 Spring Security 的 JavaFX 中基于角色的内容

search - 在ElasticSearch中找到日期差

elasticsearch - Confluentinc连接器。一个elasticsearch索引中的多个连接器。以特定的文档类型发布

ruby - 如何使用Chewy更新Elasticsearch字段类型

java - SpringBoot,手动控制两个数据源,事务失败

java - ActiveMQ:通过 JMX 获取连接列表?

java - Hibernate继承映射: Table per subclass

java - 使用 CompletableFuture 从主线程退出