spring数据ElasticSearch动态Map是否将属性Map为键值?

gkn4icbw  于 2021-06-13  发布在  ElasticSearch
关注(0)|答案(0)|浏览(245)

应用程序生成一个弹性索引。描述了对象到索引的Map,然后需要在索引中动态地创建字段(即,不在描述的Map中的字段)。Map示例:

@Document (indexName = "product", createIndex = true)
public class Product {
  @Id
  @Field (name = "id", type = FieldType.Long)
  private Long id;
  @Field (name = "name", type = FieldType.Text)
  private String name;
}

在将文档写入索引时,有必要向其添加字段 count_mag1 = 5, count_mag2 = 6 ... count_magN = 5 也就是说,Map中没有描述的字段及其编号是动态的。
据我所知,在这种情况下,我只需要留下所描述的实体并通过spring数据存储库保存实体?当然,在理想情况下,我希望向实体添加一个属性,其集合值的形式如下:

@Document (indexName = "product", createIndex = true)
public class Product {
  @Id
  @Field (name = "id", type = FieldType.Long)
  private Long id;
  @Field (name = "name", type = FieldType.Text)
  private String name;
  private Map <String, Long> counts;
}

在elastic中形成请求的阶段,迭代这个Map并创建具有这样一个键值的元素,而忽略它本身。也许有这样一个机会,而我只是愚蠢而没有注意到?
第。s。抱歉,谷歌翻译:(
升级版本:
不,不幸的是它不适合我。在上面的问题中,数据嵌套在innerdata字段中,现在我通过在实体中指定以下选项来实现相同的结果: private Map<String, Long> counts; 我的目标是最终得到这样的结果:

"_index": "infos",
"_type": "_doc",
"_id": "123456",
"_version": 1,
"_seq_no": 6919,
"_primary_term": 1,
"_routing": "4",
"found": true,
"_source": {
    {
        "id": 123,
        "name": "test",
        "count_wh_1": 123,
        "count_wh_2": 1234,
        "count_wh_3": 1235,
        .....
        "count_wh_N": 123,
    }
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题