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