Elasticsearch-mapper 基于注解方式生成mapping(2.0以上)
来源:互联网 发布:nginx ssi绝对路径 编辑:程序博客网 时间:2024/05/29 11:50
Elasticsearch生成mapping的方式上有多种方式,我们可以把mapping做成配置文件,也可以用spring-data-elasticsearch基于注解生成。
在基于注解生成这种方式上spring-data的注解还是不错的,但是如果想深度定制化一些参数spring-data却是不支持的,比如针对分词的string类型字段的fielddata加载设置。
又如果项目中不想引入spring但又想使用基于注解方式生成mapping,这时spring-data就不行了,这里有另一种选择:elasticsearch-mapper
git 地址:http://git.oschina.net/music_code_m/elasticsearch-mapper
elasticsearch-mapper支持绝大部分数据类型和相关参数的设置,使用是请参考官网对各种数据类型和相关参数:ES2.x官网mapping设置
下面是使用示例:
@Document(type = "book", _timestamp = true, _ttl = @TTL(enabled = true, _default = "5m"))public class Book { /*ID,只能是Long或者String类型*/ @Id private Long id; /*数值类型*/ @Field(type = FieldType.Double, ignoreMalformed = true) private Double price; /*数值类型*/ @Field(type = FieldType.Integer) private Integer pageCount; /*未分词String型*/ @Field(type = FieldType.String, index = FieldIndex.not_analyzed) private String isnNo; /*bool型*/ @Field(type = FieldType.Boolean, nullValue = "false") private Boolean isValid; /*日期类型*/ @Field(type = FieldType.Date, format = DateFormat.basic_time_no_millis) private Date publishDate; /*分词String类型,并设置fielddata加载限制(当然也可不设置用默认)*/ @Field( type = FieldType.String, index = FieldIndex.analyzed, analyzer = "ik_max_word", searchAnalyzer = "ik_smart", termVector = TermVector.with_positions_offsets, fielddata = @Fielddata( format = FielddataFormat.paged_bytes, frequency = @FielddataFrequencyFilter( enable = true, min = 0.001, max = 1.2, minSegmentSize = 500 ), loading = FielddataLoading.eager_global_ordinals ) ) private String author; /*multi field 类型(用于多字段搜索)*/ @MultiField( mainField = @Field(type = FieldType.String, index = FieldIndex.analyzed, analyzer = "ik_max_word", searchAnalyzer = "ik_smart"), otherFields = { @MultiNestedField(dotSuffix = "pinyin", nestedField = @Field( type = FieldType.String, index = FieldIndex.analyzed, analyzer = "lc_index", searchAnalyzer = "lc_search") ), @MultiNestedField(dotSuffix = "english", nestedField = @Field( type = FieldType.String, index = FieldIndex.analyzed, analyzer = "standard") ) } ) private String title; /*Completion Context Suggester配置(如果不配置CompletionContext则是Completion Suggester)*/ @CompletionField(analyzer = "ik", payloads = true, context = { @CompletionContext(name = "bookType", type = CompletionContextType.category, defaultVal = {"algorithm"}), @CompletionContext(name = "bookColor", type = CompletionContextType.category, defaultVal = {"red"}) }) private String suggestContextField; /*二进制类型*/ @Field(type = FieldType.Binary) private byte[] pdf; /*内嵌类型*/ @NestedObject(clazz = SalesArea.class) private SalesArea salesArea; }
public class SalesArea { /*未分词String*/ @Field(type = FieldType.String, index = FieldIndex.not_analyzed) private String localtionName; /*分词String且禁用fielddata*/ @Field( type = FieldType.String, index = FieldIndex.analyzed, analyzer = "ik_max_word", fielddata = @Fielddata(format = FielddataFormat.disabled) ) private String description; /*数值型*/ @Field(type = FieldType.Integer) private int openDays;}
1 0
- Elasticsearch-mapper 基于注解方式生成mapping(2.0以上)
- Elasticsearch-mapper 基于注解方式生成mapping(2.0以上)
- spring+sprinmvc+mybatis基本整合(二)--基于spring注解mybais非注解非Mapper接口方式
- 基于注解和基于xml方式生成bean
- elasticsearch中更新mapping的方式
- Elasticsearch中setting,mapping,分片查询方式
- Mapping 方式生成静态页
- 基于注解的Mybatis mapper 接口注意事项
- 自动生成mybatis-Mapper 注解类
- 使用MyBatis_Generator生成Dto、Dao、Mapping,,,mapper生成器
- mybatis3中注解方式使用mapper
- spring mybatis mapper接口注解方式注入
- spring mybatis mapper接口注解方式注入
- spring mybatis mapper接口注解方式注入
- 主题:hibernate生成tree(基于注解方式)
- elasticsearch mapping
- elasticsearch mapping
- elasticsearch mapping
- jQuery——初学总结
- 关于Android内核被Linux内核除名
- 做一个完整的P2P视频点播系统
- Mysql Trigger
- A small instance of visual analytics basing Spark(Python)
- Elasticsearch-mapper 基于注解方式生成mapping(2.0以上)
- Linux软连接和硬链接
- java开发工程师面试题(一)
- Linux常用命令01
- HDU 1422 重温世界杯(最长正子段长度)
- opencv的矩阵运算
- 高德地图 - 定位
- ES6学习笔记(五)Set和Map数据结构
- 小白胡说:Servlet中doGet和doPost两种请求方式的区别