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类型*/@Idprivate 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;
}

转载于:https://www.cnblogs.com/chennanlcy/p/6591786.html

Elasticsearch-mapper 基于注解方式生成mapping(2.0以上)相关推荐

  1. java datasource 配置_Spring boot 基于注解方式配置datasource

    Spring boot 基于注解方式配置datasource Xml配置 我们先来回顾下,使用xml配置数据源. 步骤: 先加载数据库相关配置文件; 配置数据源; 配置sqlSessionFactor ...

  2. spring IOC容器 Bean 管理——基于注解方式

    IOC 操作 Bean 管理(基于注解方式) 1.什么是注解 ​ (1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值, 属性名称=属性值-) ​ (2)使用注解,注解作用在类上面,方法上面, ...

  3. spring的依赖注入 -------基于注解方式

    前言: 做了2年的软件,刚开始入行的时候,没有个目标基本上都是在摸索,技术看的我眼花缭乱,这个想学,那个也想学结果是对很多技术一知半解的,工作中才发现,我们要掌握的一门可以搞定快速开发搞定所有业务需求 ...

  4. 基于注解方式实现在Tomcat8中实现WebSocket服务器接口的编写

    参考资料来源:https://blog.csdn.net/elinespace/article/details/52879839 前言: WebSocket 是 HTML5 开始提供的一种在单个 TC ...

  5. 基于注解方式@AspectJ的AOP

    启用对@AspectJ的支持 Spring默认不支持@AspectJ风格的切面声明,为了支持需要使用如下配置: <aop:aspectj-autoproxy/> 这样Spring就能发现@ ...

  6. Spring Boot基于注解方式处理接口数据脱敏

    1.定义注解 创建Spring Boot项目添加以下依赖 <dependencies><dependency><groupId>org.springframewor ...

  7. 【基于注解方式】Spring整合Kafka

    文章目录 1. 添加Maven依赖 2. 配置与参数分离 3. 工具类度内容 4. Producer 消息生产者配置 5. Consumer 消息消费者配置 6. 使用注解监听消息 7. 请求测试 8 ...

  8. spring学习--基于注解方式创建对象AOP

    概念 下面四个注解功能是一样的,都可以用来创建 bean 实例 ​ (1)@Component ​ (2)@Service ​ (3)@Controller ​ (4)@Repository 1.引入 ...

  9. Spring 事务基于注解和xml方式

    文章目录 基于注解方式的Spring事务配置 1 创建表结构 2 创建实体类 3 创建Dao 4 创建DaoImpl 5 创建Service 6 创建SrviceImpl 7 创建TxConfig 8 ...

最新文章

  1. Dev-Cpp\MinGW64\x86_64-w64-mingw32\include
  2. module ‘tensorrt‘ has no attribute ‘BuilderFlag‘
  3. 【PC工具】200324更新百度网盘下载工具——最新百度网盘下载工具使用方法及注意事项...
  4. Py之xlutils:xlutils的简介、安装、使用方法之详细攻略
  5. 基于zookeeper实现系统配置中心
  6. zoj - 1039 Number Game
  7. Java中 equals() 和 == 的区别
  8. 【Laravel-海贼王系列】第十三章,路由控制器解析
  9. 如何在ABAP Development Tool里只显示能在SAP云平台上使用的ABAP资源
  10. 图文讲解5G调制,特别通俗易懂!
  11. 百度在线编辑器 显示html,UEditor百度编辑器中JS/html代码(script标签)被过滤的解决办法...
  12. Web Api 内部数据思考 和 利用http缓存优化 Api
  13. 最短路径Dijkstra算法实现和Floyd算法实现
  14. ElementUI:导航nav设置路由模式后,切换路由导航样式不变话
  15. C++11常用特性的使用经验总结-概述及目录
  16. ubuntu:磁盘清理
  17. 人工智能 一种现代方法 第3章 通过搜索进行问题求解
  18. TWINCAT3导出html,【图解】TwinCAT 3学习之添加功能库
  19. 上海理工大计算机学研究生怎么样,上海理工大学(专业学位)计算机技术考研难吗...
  20. Oracle AutoVue 使用范围

热门文章

  1. ppz css栅格框架
  2. (转)关键字const有什么含意?
  3. 使用httpclient4.3.2来实现微信临时素材的上传
  4. rust腐竹是什么意思_学习Rust 集合与字符串
  5. gradle安装与配置_gradle相关安装
  6. 河北体检系统诚信企业推荐_应用多的隔膜计量泵价格诚信企业推荐
  7. 游戏笔记本计算机购买,2021大学生买电脑,容易犯的七种错误!游戏本和轻薄本买哪个?...
  8. java word在线预览_java 生成word文档并且在线预览的问题
  9. java数组对角线的和_java – 2d数组对角线填充
  10. Linux网络管理实 验 指 导