当前位置: 首页 > 知识库问答 >
问题:

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

姜楷
2023-03-14

我正在使用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;

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

共有2个答案

莫泓
2023-03-14

我认为你必须使用@field注释的属性,我几乎可以肯定这一点。请看这里。

如从留档:

@field:应用于字段级别,并定义字段的属性,大部分属性映射到相应的Elasticsearch映射定义(以下列表不完整,请查看注释Javadoc以获取完整参考):

name:将在Elasticsearch文档中表示的字段的名称,如果未设置,则使用Java字段名。

类型:字段类型,可以是文本、关键字、长、整数、短、字节、双精度、浮点、半浮点、缩放浮点、日期、日期纳米、布尔值、二进制、整数范围、浮点范围、长范围、双精度范围、日期范围、Ip范围、对象、嵌套、Ip、令牌计数、Percolator、展平、搜索类型。请参见Elasticsearch映射类型

日期类型的格式和模式定义。必须为日期类型定义格式。

存储:标记阉羊的原始字段值应存储在Elasticsearch中,默认值为false。

analyzer、searchAnalyzer、用于指定自定义分析器的规范化器和规范化器。

郭子航
2023-03-14

由于Spring data elasticsearch使用fasterxml模块将POJO转换为json文档,您只需使用,

@JsonProperty("country_name")
private String countryName

以在elasticsearch索引中获得不同的字段名。

 类似资料:
  • 我有一个实体,它有一个Map ElementCollection字段。我知道使用Jpa,您可以在类级别上使用@Index注释为常规字段定义索引。问题是我的地图元素集合字段创建了一个不是由@Entity注释类创建的连接表。所以我不能使用@Index注释。有没有Jpa/Hibernate方法来定义这个连接表中字段的索引,或者我必须手动定义它们?这是地图字段。 谢谢

  • 问题内容: 我是Elasticsearch的新手,正在尝试使用和字段创建多字段索引。有了这些字段,它们都工作得很好,但是当我尝试在数组中获取一些结果时,它返回一个空的数组。 我的资料: 对应: 搜索: 期望: 按,或搜索,应返回结果 搜索应返回结果 搜索应返回结果 搜索依据不应返回结果 我想念什么? 问题答案: Cross_fields具有约束,所有字段应具有相同的搜索分析器,或者所有查询项应出现

  • 如何告诉Elasticsearch在按术语搜索时排除某个字段? 当一个普通用户搜索摩托车时,什么都不应该返回,但如果他们搜索史密斯,这两个都应该返回。 有能力搜索认证字段的用户如果搜索摩托车将返回标记,如果搜索史密斯将返回标记。

  • 问题内容: 我正在使用Elasticsearch的索引别名在更完整的索引上创建受限视图,以支持旧版搜索应用程序。这很好。但我也想从返回的结果中排除某些敏感字段(它们包含电子邮件地址,因此我们希望不进行收集。) 这是我所拥有的: 这适用于查询(我看不到field_with_email),过滤条件也适用(我得到了受限的索引),但是我仍然在索引别名的查询结果中看到field_with_email。 这应

  • 问题内容: 我有一个文档,其中包含许多我从未查询过的字段,因此我想关闭这些字段的索引以节省资源。我相信我需要禁用该字段,但是如何指定要对哪些字段建立索引呢? 问题答案: 默认情况下,所有字段也都在_all特殊字段内建立索引,该字段开箱即用地提供了所谓的catchall功能。但是,可以通过以下选项为映射中的每个字段指定是否要将其添加到_all字段: 上面的示例禁用了name字段的默认行为,该行为不会

  • 我正在使用ElasticSearch 7.3来查询一些文档, 我想在查询响应中只返回每个文档的特定字段, 我发现可以使用来实现这一点, 我可以从Kibana使用这个查询来实现这一点- 返回给我正确的数据- 但我无法使用ElasticSearch的节点客户端实现同样的功能- 有人能帮我找到正确的方法来实现我的用例吗? 引用- https://www.elastic.co/guide/en/elast