spring-data-elasticsearcj @Document 和 @Field 注解详解
Posted durenniu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring-data-elasticsearcj @Document 和 @Field 注解详解相关的知识,希望对你有一定的参考价值。
版本:elasticsearch 6.7.0
maven包:
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-elasticsearch</artifactId> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>6.7.0</version> </dependency>
@Document 注解:
public @interface Document String indexName(); //索引库的名称,个人建议以项目的名称命名 String type() default ""; //类型,个人建议以实体的名称命名 short shards() default 5; //默认分区数 short replicas() default 1; //每个分区默认的备份数 String refreshInterval() default "1s"; //刷新间隔 String indexStoreType() default "fs"; //索引文件存储类型
@Field注解:
public @interface Field FieldType type() default FieldType.Auto; //自动检测属性的类型,可以根据实际情况自己设置 FieldIndex index() default FieldIndex.analyzed; //默认情况下分词,一般默认分词就好,除非这个字段你确定查询时不会用到 DateFormat format() default DateFormat.none; //时间类型的格式化 String pattern() default ""; boolean store() default false; //默认情况下不存储原文 String searchAnalyzer() default ""; //指定字段搜索时使用的分词器 String indexAnalyzer() default ""; //指定字段建立索引时指定的分词器 String[] ignoreFields() default ; //如果某个字段需要被忽略 boolean includeInParent() default false;
FieldType类型:
public enum FieldType Text, Integer, Long, Date, Float, Double, Boolean, Object, Auto, Nested, Ip, Attachment, Keyword
Text类型:索引全文字段,如电子邮件正文的描述或者产品描述。这些字段被分析器将字符串转换为单个术语列表。分析过程允许es在每个的全文域中搜索单个单词。文本字段不用于排序,也很少用于聚合
Object类型:Json文档本质上是分层的,文档可能包含内部对象,而这些对象又可能包含内部对象本身。
"region": "US", "manager": "age": 30, "name": "first": "John", "last": "Smith"
Nested类型:嵌套类型是对象数据类型的一个专门的版本,他允许对象数组以一种彼此独立查询的方式进行索引
PUT my_index "mappings": "_doc": "properties": "user": "type": "nested" PUT my_index/_doc/1 "group" : "fans", "user" : [ "first" : "John", "last" : "Smith" , "first" : "Alice", "last" : "White" ] GET my_index/_search "query": "nested": "path": "user", "query": "bool": "must": [ "match": "user.first": "Alice" , "match": "user.last": "Smith" ] GET my_index/_search "query": "nested": "path": "user", "query": "bool": "must": [ "match": "user.first": "Alice" , "match": "user.last": "White" ] , "inner_hits": "highlight": "fields": "user.first":
Ip类型:ip字段可以索引和存储IPV4和IPv6地址
PUT my_index "mappings": "_doc": "properties": "ip_addr": "type": "ip" PUT my_index/_doc/1 "ip_addr": "192.168.1.1" GET my_index/_search "query": "term": "ip_addr": "192.168.0.0/16"
Keyword类型:用于索引结构化内容(如电子邮件地址,主机名,状态码,邮政编码等)的字段。他们通常用于过滤、排序、聚合。关键字字段只能根据期确切的值进行搜索,
分析过程允许Elasticsearch在每个全文域中搜索单个单词。文本字段不用于排序,也很少用于聚合(
以上是关于spring-data-elasticsearcj @Document 和 @Field 注解详解的主要内容,如果未能解决你的问题,请参考以下文章