zoukankan      html  css  js  c++  java
  • Elasticsearch-mapper 基于注解方式生成mapping(2.0以上)

    Elasticsearch生成mapping的方式上有多种方式,我们可以把mapping做成配置文件,也可以用spring-data-elasticsearch基于注解生成。

    在基于注解生成这种方式上spring-data的注解还是不错的,但是如果想深度定制化一些参数spring-data却是不支持的,比如针对分词的string类型字段的fielddata加载设置。

    又如果项目中不想引入spring但又想使用基于注解方式生成mapping,这时spring-data就不行了,这里有另一种选择:elasticsearch-mapper。

    elasticsearch-mapper支持绝大部分数据类型和相关参数的设置,使用是请参考官网对各种数据类型和相关参数:ES2.x官网mapping设置

    下面是使用示例:

     1 @Document(type = "book", _timestamp = true, _ttl = @TTL(enabled = true, _default = "5m"))  
     2 public class Book {  
     3     /*ID,只能是Long或者String类型*/  
     4     @Id  
     5     private Long id;  
     6   
     7     /*数值类型*/  
     8     @Field(type = FieldType.Double, ignoreMalformed = true)  
     9     private Double price;  
    10   
    11     /*数值类型*/  
    12     @Field(type = FieldType.Integer)  
    13     private Integer pageCount;  
    14   
    15     /*未分词String型*/  
    16     @Field(type = FieldType.String, index = FieldIndex.not_analyzed)  
    17     private String isnNo;  
    18   
    19     /*bool型*/  
    20     @Field(type = FieldType.Boolean, nullValue = "false")  
    21     private Boolean isValid;  
    22   
    23     /*日期类型*/  
    24     @Field(type = FieldType.Date, format = DateFormat.basic_time_no_millis)  
    25     private Date publishDate;  
    26   
    27     /*分词String类型,并设置fielddata加载限制(当然也可不设置用默认)*/  
    28     @Field(  
    29             type = FieldType.String,  
    30             index = FieldIndex.analyzed,  
    31             analyzer = "ik_max_word",  
    32             searchAnalyzer = "ik_smart",  
    33             termVector = TermVector.with_positions_offsets,  
    34             fielddata = @Fielddata(  
    35                     format = FielddataFormat.paged_bytes,  
    36                     frequency = @FielddataFrequencyFilter(  
    37                             enable = true,  
    38                             min = 0.001,  
    39                             max = 1.2,  
    40                             minSegmentSize = 500  
    41                     ),  
    42                     loading = FielddataLoading.eager_global_ordinals  
    43             )  
    44   
    45     )  
    46     private String author;  
    47   
    48     /*multi field 类型(用于多字段搜索)*/  
    49     @MultiField(  
    50             mainField = @Field(type = FieldType.String, index = FieldIndex.analyzed, analyzer = "ik_max_word", searchAnalyzer = "ik_smart"),  
    51             otherFields = {  
    52                     @MultiNestedField(dotSuffix = "pinyin", nestedField = @Field(  
    53                             type = FieldType.String,  
    54                             index = FieldIndex.analyzed,  
    55                             analyzer = "lc_index",  
    56                             searchAnalyzer = "lc_search")  
    57                     ),  
    58                     @MultiNestedField(dotSuffix = "english", nestedField = @Field(  
    59                             type = FieldType.String,  
    60                             index = FieldIndex.analyzed,  
    61                             analyzer = "standard")  
    62                     )  
    63             }  
    64     )  
    65     private String title;  
    66   
    67     /*Completion Context Suggester配置(如果不配置CompletionContext则是Completion Suggester)*/  
    68     @CompletionField(analyzer = "ik", payloads = true, context = {  
    69             @CompletionContext(name = "bookType", type = CompletionContextType.category, defaultVal = {"algorithm"}),  
    70             @CompletionContext(name = "bookColor", type = CompletionContextType.category, defaultVal = {"red"})  
    71     })  
    72     private String suggestContextField;  
    73   
    74     /*二进制类型*/  
    75     @Field(type = FieldType.Binary)  
    76     private byte[] pdf;  
    77   
    78     /*内嵌类型*/  
    79     @NestedObject(clazz = SalesArea.class)  
    80     private SalesArea salesArea;  
    81       
    82 }

    [Reference]

    [1] http://blog.csdn.net/chennanymy/article/details/52663589

  • 相关阅读:
    Attributes in C#
    asp.net C# 时间格式大全
    UVA 10518 How Many Calls?
    UVA 10303 How Many Trees?
    UVA 991 Safe Salutations
    UVA 10862 Connect the Cable Wires
    UVA 10417 Gift Exchanging
    UVA 10229 Modular Fibonacci
    UVA 10079 Pizza Cutting
    UVA 10334 Ray Through Glasses
  • 原文地址:https://www.cnblogs.com/hoojjack/p/8196193.html
Copyright © 2011-2022 走看看