KCloud-Platform-IoT KCloud-Platform-IoT
首页
  • 活动

    • KCloud-Platform-IoT 开源三周年快乐&父亲节快乐
  • 指南

    • 后端项目启动
    • 前端项目启动
    • Docker安装
    • Linux常用命令
    • Docker常用命令
    • JVM性能优化
    • 项目配置
    • COLA代码规范
    • OAuth2.1授权服务器配置
    • OAuth2.1资源服务器配置
    • OAuth2.1认证API配置
    • Nacos配置
    • 网关路由配置
    • 项目常用注解
    • Elasticsearch注解
赞助
GitHub (opens new window)
首页
  • 活动

    • KCloud-Platform-IoT 开源三周年快乐&父亲节快乐
  • 指南

    • 后端项目启动
    • 前端项目启动
    • Docker安装
    • Linux常用命令
    • Docker常用命令
    • JVM性能优化
    • 项目配置
    • COLA代码规范
    • OAuth2.1授权服务器配置
    • OAuth2.1资源服务器配置
    • OAuth2.1认证API配置
    • Nacos配置
    • 网关路由配置
    • 项目常用注解
    • Elasticsearch注解
赞助
GitHub (opens new window)
  • 活动

    • KCloud-Platform-IoT 开源三周年快乐&父亲节快乐
  • 指南

    • 后端项目启动
    • 前端项目启动
    • Docker安装
    • Linux常用命令
    • Docker常用命令
    • JVM性能优化
    • 项目配置
    • COLA代码规范
    • OAuth2.1授权服务器配置
    • OAuth2.1资源服务器配置
    • OAuth2.1认证API配置
    • Nacos配置
    • 网关路由配置
    • 项目常用注解
    • Elasticsearch注解
      • 1. @Index
        • 说明
        • 介绍
        • 配置
        • 例子
      • 2. @Analysis
        • 说明
        • 介绍
        • 配置
        • 例子
      • 3. @Analyzer
        • 说明
        • 介绍
        • 配置
        • 例子
      • 4. @Args
        • 说明
        • 介绍
        • 配置
        • 例子
      • 5. @Constants
        • 说明
        • 介绍
        • 配置
        • 例子
      • 6. @Document (Record)
        • 说明
        • 介绍
        • 配置
        • Document.Mapping Record
        • Document.SubField Record
        • Document.Setting Record
        • Document.Analysis Record
        • Document.Filter Record
        • Document.Args Record
        • Document.Option Record
        • Document.Analyzer Record
        • 例子
      • 7. @Field
        • 说明
        • 介绍
        • 配置
        • 例子
      • 8. @Filter
        • 说明
        • 介绍
        • 配置
        • 例子
      • 9. @Option
        • 说明
        • 介绍
        • 配置
        • 例子
      • 10. @Setting
        • 说明
        • 介绍
        • 配置
        • 例子
      • 11. @SubField
        • 说明
        • 介绍
        • 配置
        • 例子
      • 12. Type (Enum)
        • 说明
        • 介绍
        • 配置
        • 例子
  • 二开指南
  • 指南
KCloud-Platform-IoT
2026-02-10
目录

Elasticsearch注解

你好呀,我的老朋友!我是老寇,欢迎来到老寇IoT云平台!

本文档旨在总结 org.laokou.common.elasticsearch.annotation 包下的所有 Elasticsearch 相关注解,提供详细的说明、介绍、配置和使用示例。

# 1. @Index

# 说明

@Index 注解用于标记一个类,表示该类对应一个 Elasticsearch 索引。它允许配置索引的分析器和设置。

# 介绍

当您需要将一个 Java 对象映射到 Elasticsearch 中的一个索引时,可以使用此注解。它提供了对索引级别设置和分析器配置的入口。

# 配置

属性 类型 默认值 说明
analysis Analysis @Analysis 配置索引的分析器。
setting Setting @Setting 配置索引的设置,如分片、副本和刷新间隔。

# 例子

@Index(analysis = @Analysis(analyzers = {
    @Analyzer(name = "ik_smart", args = @Args(filter = "stop", tokenizer = "ik_smart"))
}), setting = @Setting(shards = 3, replicas = 1, refreshInterval = "30s"))
public class MyDocument {
    // ... 字段
}
@Index(setting = @Setting(refreshInterval = "-1"),
		analysis = @Analysis(
				filters = { @Filter(name = "pinyin_filter",
						options = { @Option(key = "type", value = "pinyin"),
								@Option(key = "keep_full_pinyin", value = "false"),
								@Option(key = "keep_joined_full_pinyin", value = "true"),
								@Option(key = "keep_original", value = "true"),
								@Option(key = "limit_first_letter_length", value = "16"),
								@Option(key = "remove_duplicated_term", value = "true"),
								@Option(key = "none_chinese_pinyin_tokenize", value = "false") }) },
				analyzers = { @Analyzer(name = "ik_pinyin",
						args = @Args(filter = "pinyin_filter", tokenizer = "ik_max_word")) }))
@Data
public class Test1 implements Serializable {

	@JsonSerialize(using = ToStringSerializer.class)
	@Field(type = Type.LONG)
	private Long id;

	@Field(type = Type.TEXT, searchAnalyzer = "ik_smart", analyzer = "ik_pinyin", index = true, subField = @SubField(ignoreAbove = 256))
	private String name;

}

# 2. @Analysis

# 说明

@Analysis 注解用于定义 Elasticsearch 索引的分析器和过滤器。

# 介绍

Elasticsearch 的文本分析是其核心功能之一。@Analysis 允许您在索引级别定义自定义的分析器和过滤器,以满足特定的文本处理需求,例如分词、词干提取、停用词过滤等。

# 配置

属性 类型 默认值 说明
filters Filter[] {} 定义用于文本分析的过滤器数组。
analyzers Analyzer[] {} 定义用于文本分析的分析器数组。

# 例子

@Analysis(
    filters = {
        @Filter(name = "my_stop_filter", options = {
            @Option(key = "type", value = "stop"),
            @Option(key = "stopwords", value = "_chinese_")
        })
    },
    analyzers = {
        @Analyzer(name = "my_custom_analyzer", args = @Args(filter = "my_stop_filter", tokenizer = "ik_max_word"))
    }
)
public @interface MyAnalysisConfig {}

# 3. @Analyzer

# 说明

@Analyzer 注解用于定义一个具体的分析器。

# 介绍

分析器是 Elasticsearch 中用于处理文本的组件,它由一个分词器(tokenizer)和零个或多个过滤器(filter)组成。此注解允许您指定分析器的名称以及其使用的过滤器和分词器。

# 配置

属性 类型 默认值 说明
name String 分析器的名称。
args Args 分析器使用的过滤器和分词器参数。

# 例子

@Analyzer(name = "ik_smart_analyzer", args = @Args(filter = "stop", tokenizer = "ik_smart"))
public @interface MyAnalyzer {}

# 4. @Args

# 说明

@Args 注解用于为 @Analyzer 提供参数,指定分析器使用的过滤器和分词器。

# 介绍

这是 @Analyzer 注解的辅助注解,用于封装分析器所需的具体配置,例如指定分词器类型和过滤器链。

# 配置

属性 类型 默认值 说明
filter String 过滤器名称。
tokenizer String 分词器名称。

# 例子

@Args(filter = "standard", tokenizer = "whitespace")
public @interface MyArgs {}

# 5. @Constants

# 说明

Constants 类定义了 Elasticsearch 搜索结果高亮显示的前缀和后缀标签。

# 介绍

这是一个工具类,提供了在 Elasticsearch 搜索结果中用于高亮显示匹配文本的常量。通常用于前端展示。

# 配置

无。

# 例子

// 在代码中使用
String preTags = Constants.PRE_TAGS; // "<font color='red'>"
String postTags = Constants.POST_TAGS; // "</font>"

# 6. @Document (Record)

# 说明

Document 是一个 Java Record,用于在运行时表示 Elasticsearch 索引的结构和配置。

# 介绍

这个 Record 提供了在代码中构建 Elasticsearch 索引定义(包括映射、设置和分析)的结构化方式。它不是一个注解,而是一个数据传输对象,用于程序化地创建或更新索引。

# 配置

属性 类型 说明
name String 索引名称。
alias String 索引别名。
mappings List<Mapping> 字段映射列表。
setting Setting 索引设置。
analysis Analysis 索引分析器配置。

# Document.Mapping Record

属性 类型 说明
field String 字段名称。
type Type 字段类型。
searchAnalyzer String 搜索时使用的分析器。
analyzer String 索引时使用的分析器。
eagerGlobalOrdinals boolean 是否启用 eager global ordinals。
format String 日期格式。
index boolean 是否索引该字段。
subField SubField 子字段配置。

# Document.SubField Record

属性 类型 说明
ignoreAbove Integer 忽略高于此长度的字符串。

# Document.Setting Record

属性 类型 说明
shards short 分片数量。
replicas short 副本数量。
refreshInterval String 刷新间隔。

# Document.Analysis Record

属性 类型 说明
filters List<Filter> 过滤器列表。
analyzers List<Analyzer> 分析器列表。

# Document.Filter Record

属性 类型 说明
name String 过滤器名称。
options List<Option> 过滤器选项。

# Document.Args Record

属性 类型 说明
filter String 过滤器名称。
tokenizer String 分词器名称。

# Document.Option Record

属性 类型 说明
key String 选项键。
value String 选项值。

# Document.Analyzer Record

属性 类型 说明
name String 分析器名称。
args Args 分析器参数。

# 例子

// 示例:构建一个 Document 对象
Document myDoc = new Document(
    "my_index",
    "my_alias",
    List.of(
        new Document.Mapping("title", Type.TEXT, "ik_smart", "ik_smart", false, "", true, new Document.SubField(256)),
        new Document.Mapping("description", Type.KEYWORD, "", "", false, "", true, new Document.SubField(256))
    ),
    new Document.Setting((short) 1, (short) 1, "1s"),
    new Document.Analysis(
        List.of(new Document.Filter("stop_filter", List.of(new Document.Option("type", "stop")))),
        List.of(new Document.Analyzer("custom_analyzer", new Document.Args("stop_filter", "standard")))
    )
);

# 7. @Field

# 说明

@Field 注解用于标记一个类的字段,表示该字段对应 Elasticsearch 索引中的一个文档字段。

# 介绍

此注解允许您在 Java 对象的字段上直接定义其在 Elasticsearch 中的映射属性,例如字段类型、分析器、是否索引等。

# 配置

属性 类型 默认值 说明
value String "" 字段名称,默认为 Java 字段名。
type Type 字段类型。
searchAnalyzer String "" 搜索时使用的分析器。
analyzer String "" 索引时使用的分析器。
eagerGlobalOrdinals boolean false 是否启用 eager global ordinals。
format String "" 日期格式。
index boolean false 是否索引该字段。
subField SubField @SubField(ignoreAbove = 256) 子字段配置。

# 例子

public class Product {
    @Field(type = Type.KEYWORD)
    private String id;

    @Field(type = Type.TEXT, analyzer = "ik_smart", searchAnalyzer = "ik_smart")
    private String name;

    @Field(type = Type.DATE, format = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
}

# 8. @Filter

# 说明

@Filter 注解用于定义一个 Elasticsearch 过滤器。

# 介绍

过滤器是分析器的一部分,用于对分词后的词元进行进一步处理,例如转换为小写、移除停用词、同义词处理等。

# 配置

属性 类型 默认值 说明
name String 过滤器的名称。
options Option[] 过滤器的选项。

# 例子

@Filter(name = "lowercase_filter", options = {
    @Option(key = "type", value = "lowercase")
})
public @interface MyFilter {}

# 9. @Option

# 说明

@Option 注解用于为 @Filter 或其他配置提供键值对选项。

# 介绍

这是一个通用的辅助注解,用于为 Elasticsearch 的各种配置提供灵活的键值对参数。

# 配置

属性 类型 默认值 说明
key String 选项的键。
value String 选项的值。

# 例子

@Option(key = "stopwords", value = "a,an,the")
public @interface MyOption {}

# 10. @Setting

# 说明

@Setting 注解用于定义 Elasticsearch 索引的设置。

# 介绍

此注解允许您配置索引级别的参数,例如分片数量、副本数量和刷新间隔,这些参数会影响索引的性能和可用性。

# 配置

属性 类型 默认值 说明
shards short 1 索引的主分片数量。
replicas short 1 每个主分片的副本数量。
refreshInterval String "1s" 索引刷新间隔,例如 "1s", "-1" (禁用)。

# 例子

@Setting(shards = 5, replicas = 2, refreshInterval = "5s")
public @interface MySetting {}

# 11. @SubField

# 说明

@SubField 注解用于配置 Elasticsearch 字段的子字段属性。

# 介绍

子字段允许您以不同的方式索引同一个字段。例如,一个 text 字段可以有一个 keyword 类型的子字段,用于精确匹配和聚合。此注解主要用于配置 keyword 子字段的 ignore_above 属性。

# 配置

属性 类型 默认值 说明
ignoreAbove int 忽略长度超过此值的字符串。

# 例子

@Field(type = Type.TEXT, subField = @SubField(ignoreAbove = 100))
private String longText;

# 12. Type (Enum)

# 说明

Type 枚举定义了 Elasticsearch 支持的各种字段类型。

# 介绍

此枚举提供了在 @Field 注解中指定字段类型的选项,并包含了将这些类型映射到 Elasticsearch 客户端 API 的逻辑。

# 配置

枚举值 说明
AUTO 自动检测字段类型。
TEXT 文本字段,用于全文搜索。
KEYWORD 关键词字段,用于精确匹配和聚合。
LONG 长整型。
INTEGER 整型。
SHORT 短整型。
BYTE 字节型。
DOUBLE 双精度浮点型。
FLOAT 浮点型。
DATE 日期类型。
BOOLEAN 布尔型。
BINARY 二进制类型。
INTEGER_RANGE 整型范围。
FLOAT_RANGE 浮点型范围。
LONG_RANGE 长整型范围。
DOUBLE_RANGE 双精度浮点型范围。
DATE_RANGE 日期范围。
OBJECT 对象类型。
IP IP 地址类型。

# 例子

@Field(type = Type.TEXT)
private String title;

@Field(type = Type.KEYWORD)
private String category;

@Field(type = Type.LONG)
private Long views;

我是老寇,我们下次再见啦!

上次更新: 2/10/2026, 10:06:32 PM
项目常用注解

← 项目常用注解

Theme by Vdoing | Copyright © 2022-2026 laokou | Apache 2.0 License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式