Spring boot整合elastic search 7.9.1实现全文检索。主要包含以下特性:
- 全文检索的实现主要包括构建索引、高级搜索、聚集统计、数据建模四个模块;
- 使用 elasticsearch-rest-high-level-client 来操作elasticsearch,构建索引时,根据实际情况考虑哪些字段需要分词,哪些不需要分词,这会影响搜索结果。使用IK分词器虽然能解决一些中文分词的问题,但是由于分词的粒度不够细,导致很多词语可能搜不到。例如ik分词器在构建索引“三国无双”时,会把“三国”“无双”存起来建索引,但是搜索“国无”时,搜不出来,因此,我们采用把文本拆分到最细粒度来进行分词,从而最大限度地搜索到相关结果。详情参考:如何手动控制分词粒度提高搜索的准确性
- 高级搜索实现了以下几种:
- 多字段搜索,指定多个字段进行搜索:query_string,支持高亮显示
- 经纬度搜索:distanceQuery
- 范围过滤,对搜索结果进一步按照范围进行条件过滤:rangeQuery
- 搜索结果的展示提供了普通分页和滚动分页两种实现。普通分页只适合数据量较小的场景,在数据量非常大的情况下,start+size普通分页会把全部记录加载到内存中,这样做不但运行速度特别慢,而且容易让es出现内存不足而挂掉。滚动分页需要得到一个scrollid,以后每次使用scrollid去获取下一页的内容,缺点是不能跳页。
- 聚集统计包含词条聚集、日期直方图聚集、范围聚集,并使用chart.js进行可视化
- 数据建模部分实现了嵌套对象的使用,查询时无需join性能较好,但是在建索引时就要把关联数据join好嵌套进去。
- swagger入口:http://localhost:8080/swagger-ui.html
- 新增数据库数据导入es的工具,编程实现比logstash灵活。使用请切换分支到master。db-import-elastic_search
- 通用的多条件查询结构模板是布尔查询,其中must部分放入带分词的搜索例如match、querystring等;filter部分放入过滤条件例如term、range等查询。因为filter部分利用缓存、跳过相关度打分提高性能:
// 通用查询结构模板
{
"query": {
"bool": {
"must": [
{ "match": { "title": "Search" }},
{ "match": { "content": "Elasticsearch" }}
],
"filter": [
{ "term": { "status": "published" }},
{ "range": { "publish_date": { "gte": "2015-01-01" }}}
]
}
}
}
- 安装Logstash并全量导入数据库数据
- 使用Logstash增量更新数据
- Logstash如何生成联合主键
- logstash如何对敏感配置项加密
- logstash如何支持多开
- 如何将logstash自动更新服务配置为WINDOWS后台服务
- logstash如何导入join类型的父子关系
- elastic search的REST服务(直接使用kibana运行)
- 如何手动控制分词粒度提高搜索的准确性
- 如何防止跳词提高搜索的准确性
- elastic search如何自定义日期格式
- 索引的doc value和field data的区别和联系
- 如何修改es的堆内存大小加快索引查询性能
- 如何搭建elastic search集群
- elastic search如何处理多个索引之间的主外键关联
- Spring boot整合Mybatis实现增删改查(支持多数据源)
- Struts2,Hibernate,Spring三大框架的整合实现增删改查
- Spring,SpringMVC和Hibernate的整合实现增删改查
- Spring boot整合activiti工作流引擎实现OA开发
- Spring发布与调用REST风格的WebService
- Spring boot整合Axis调用SOAP风格的web服务
- Spring boot整合Apache Shiro实现RBAC权限控制
- 使用Spring security实现RBAC权限控制
- Spring整合Jasig CAS框架实现单点登录
- Spring boot整合mongoDB文档数据库实现增删改查
- Spring连接Redis实现缓存
- Spring连接图存数据库Neo4j实现增删改查
- Spring boot整合列存数据库hbase实现增删改查
- Spring平台整合消息队列ActiveMQ实现发布订阅、生产者消费者模型(JMS)
- Spring boot整合消息队列RabbitMQ实现四种消息模式(AMQP)
- Spring boot整合kafka 2.1.0实现大数据消息管道
- Spring boot整合websocket实现即时通讯
- Spring security整合oauth2实现token认证
- Spring MVC整合FastDFS客户端实现文件上传
- 23种设计模式,源码、注释、使用场景
- 使用ETL工具Kettle的实例
- Git指南和分支管理策略
- 使用数据仓库进行OLAP数据分析(Mysql+Kettle+Zeppelin)
- zookeeper原理、架构、使用场景和可视化
- Spring boot整合Apache dubbo v2.7.5实现分布式服务治理(SOA架构)
包含组件Spring boot v2.2.2+Dubbo v2.7.5+Nacos v1.1.1 效果图
包含组件Nacos+Feign+Gateway+Ribbon+Sentinel+Zipkin 效果图
- 使用jenkins+centos+git+maven搭建持续集成环境自动化部署分布式服务
- 使用docker+compose+jenkins+gitlab+spring cloud实现微服务的编排、持续集成和动态扩容
- 使用FastDFS搭建分布式文件系统(高可用、负载均衡)
- 搭建高可用nginx集群和Tomcat负载均衡
- 使用mycat实现Mysql数据库的主从复制、读写分离、分表分库、负载均衡和高可用
- Spring boot整合Elastic search实现全文检索和大数据分析
包含组件nacos v1.1.0 + seata v0.7.1 +spring boot dubbo v2.7.5 效果图
包含组件nacos v1.1.0 + seata v0.7.1 +spring cloud alibaba v2.1.0 效果图