如何在弹性搜索中创建不同的文档,但ID相同

时间:2017-12-12 13:26:08

标签: 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我可以将信息放在弹性搜索中。

我面临的问题是,在弹性搜索中,创建的文档总数为1。

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

如何在具有相同ID的弹性搜索中创建10个不同的文档。

另外需要注意的是,这些字段不在同一个类中,实际的数据对象非常复杂,但总的来说数据对象将具有这些字段。此外,数据对象可以具有不同类型的实例,但这些字段将存在。

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

请有人建议我如何创建不同的文档......或单个文档,但在弹性搜索中有10个子实例。

由于

1 个答案:

答案 0 :(得分:0)

来自documentation

  

_id字段每个文档都有一个唯一标识它的_id,它被编入索引,以便可以使用GET API查找文档   或ids查询。

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

elasticsearch中的

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