小编Fab*_*ens的帖子

如何使用Spring Data ElasticSearch为POJO定义ElasticSearch索引字段名称

我正在使用Spring Data ElasticSearch来执行CRUD操作.默认情况下,当使用@Document注释的POJO写入ElasticSearch索引时,索引字段名称与POJO的Java属性名称相同.如何配置索引字段名称不同?例如,使用此文档POJO:

@Document(indexName = "areas", type = "area")
public class Area {

    @Id
    private String id;
    private String countyName;
    private String postOfficeName;
    private String stateName;
Run Code Online (Sandbox Code Playgroud)

我如何配置它,以便ElasticSearch中的索引字段被序列化为county_name而不是countyName?

elasticsearch spring-data spring-data-elasticsearch

7
推荐指数
1
解决办法
1815
查看次数

ElasticSearch中字段名称的最佳实践

我正在研究在Java中定义ElasticSearch之上的一些轻量级服务和数据访问层的简单方法.我的POJO数据对象自然会在camelCase中有属性名称,但我想知道是否应该在ElasticSearch类型映射中使用camelCase作为字段名称.在数据存储库世界中,特别是在传统的RDBMS中,字段名称绝对不是驼峰式的.如果我没弄错的话,NoSql世界似乎有一种趋势是在字段名中使用下划线,例如first_name.这是ElasticSearch的常见做法吗?如果是这样,这是否意味着我必须配置一个基于杰克逊的转换服务,该服务能够在camelCase和下划线字段名称之间来回映射?

java naming-conventions elasticsearch

5
推荐指数
1
解决办法
3217
查看次数

如何将集合包装在单个父标记中

我有一个名为XmlSource的类,它包含XmlSourceAudioLang类型的对象集合,而XmlSourceAudioLang类有一个名为language的字段,我需要将其编组为XML,即:

@XmlAccessorType(XmlAccessType.FIELD)
public class XmlSource {

  @XmlElement(name="original_audio_language", nillable=true) 
  protected Set<XmlSourceAudioLang> originalAudio;

}
Run Code Online (Sandbox Code Playgroud)

@XmlAccessorType(XmlAccessType.FIELD)
public class XmlSourceAudioLang {

  @XmlElement(nillable = true)
  private String language;

}
Run Code Online (Sandbox Code Playgroud)

通过此设置,JAXB为集合中的每个对象生成original_audio_language标记:

<original_audio_language>
  <language>Ukrainian</language>
</original_audio_language>
<original_audio_language>
  <language>Russian</language>
</original_audio_language>
Run Code Online (Sandbox Code Playgroud)

有没有办法配置绑定,以便只有一个父original_audio_language标记?

java xml collections jaxb

4
推荐指数
1
解决办法
1387
查看次数