• spring-data-elasticsearch (elasticsearch 6.7.0) @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在每个全文域中搜索单个单词。文本字段不用于排序,也很少用于聚合(

  • 相关阅读:
    C++:delete和delete[]释放内存的区别
    C++:四种必须使用初始化列表情况
    C++:获取数组长度
    C++:构造函数默认的参数声明
    java 的开源wiki维基系统
    openfire 最大连接数调优
    即时通讯服务器的对比
    分分钟带你玩转 Web Services
    让git忽略ignore所有文件,只对某些文件进行版本控制
    miracast 协议wifi display
  • 原文地址:https://www.cnblogs.com/durenniu/p/11404247.html
Copyright © 2020-2023  润新知