Skip to content

shenzhanwang/Spring-elastic_search

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spring-elastic_search

介绍

Spring boot整合elastic search 7.9.1实现全文检索。主要包含以下特性:

  1. 全文检索的实现主要包括构建索引、高级搜索、聚集统计、数据建模四个模块;
  2. 使用 elasticsearch-rest-high-level-client 来操作elasticsearch,构建索引时,根据实际情况考虑哪些字段需要分词,哪些不需要分词,这会影响搜索结果。使用IK分词器虽然能解决一些中文分词的问题,但是由于分词的粒度不够细,导致很多词语可能搜不到。例如ik分词器在构建索引“三国无双”时,会把“三国”“无双”存起来建索引,但是搜索“国无”时,搜不出来,因此,我们采用把文本拆分到最细粒度来进行分词,从而最大限度地搜索到相关结果。详情参考:如何手动控制分词粒度提高搜索的准确性
  3. 高级搜索实现了以下几种:
    • 多字段搜索,指定多个字段进行搜索:query_string,支持高亮显示
    • 经纬度搜索:distanceQuery
    • 范围过滤,对搜索结果进一步按照范围进行条件过滤:rangeQuery
  4. 搜索结果的展示提供了普通分页和滚动分页两种实现。普通分页只适合数据量较小的场景,在数据量非常大的情况下,start+size普通分页会把全部记录加载到内存中,这样做不但运行速度特别慢,而且容易让es出现内存不足而挂掉。滚动分页需要得到一个scrollid,以后每次使用scrollid去获取下一页的内容,缺点是不能跳页。
  5. 聚集统计包含词条聚集、日期直方图聚集、范围聚集,并使用chart.js进行可视化
  6. 数据建模部分实现了嵌套对象的使用,查询时无需join性能较好,但是在建索引时就要把关联数据join好嵌套进去。
  7. swagger入口:http://localhost:8080/swagger-ui.html
  8. 新增数据库数据导入es的工具,编程实现比logstash灵活。使用请切换分支到master。db-import-elastic_search
  9. 通用的多条件查询结构模板是布尔查询,其中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" }}}
      ]
    }
  }
}

相关WIKI

kibana篇

Logstash篇

elastic search篇

效果图

输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明

附录:中央技术储备仓库(Central Technique Reserve Repository)

基础篇:职业化,从做好OA系统开始

  1. Spring boot整合Mybatis实现增删改查(支持多数据源)输入图片说明
  2. Struts2,Hibernate,Spring三大框架的整合实现增删改查
  3. Spring,SpringMVC和Hibernate的整合实现增删改查
  4. Spring boot整合activiti工作流引擎实现OA开发输入图片说明
  5. Spring发布与调用REST风格的WebService
  6. Spring boot整合Axis调用SOAP风格的web服务
  7. Spring boot整合Apache Shiro实现RBAC权限控制
  8. 使用Spring security实现RBAC权限控制
  9. Spring整合Jasig CAS框架实现单点登录

中级篇:中间件的各种姿势

  1. Spring boot整合mongoDB文档数据库实现增删改查
  2. Spring连接Redis实现缓存
  3. Spring连接图存数据库Neo4j实现增删改查
  4. Spring boot整合列存数据库hbase实现增删改查
  5. Spring平台整合消息队列ActiveMQ实现发布订阅、生产者消费者模型(JMS)
  6. Spring boot整合消息队列RabbitMQ实现四种消息模式(AMQP)
  7. Spring boot整合kafka 2.1.0实现大数据消息管道
  8. Spring boot整合websocket实现即时通讯输入图片说明
  9. Spring security整合oauth2实现token认证
  10. Spring MVC整合FastDFS客户端实现文件上传
  11. 23种设计模式,源码、注释、使用场景
  12. 使用ETL工具Kettle的实例
  13. Git指南和分支管理策略
  14. 使用数据仓库进行OLAP数据分析(Mysql+Kettle+Zeppelin)

高级篇:架构之美

  1. zookeeper原理、架构、使用场景和可视化
  2. Spring boot整合Apache dubbo v2.7.5实现分布式服务治理(SOA架构) 输入图片说明

包含组件Spring boot v2.2.2+Dubbo v2.7.5+Nacos v1.1.1 效果图

  1. 使用Spring Cloud Alibaba v2.1.0实现微服务架构(MSA架构)输入图片说明

包含组件Nacos+Feign+Gateway+Ribbon+Sentinel+Zipkin 效果图

  1. 使用jenkins+centos+git+maven搭建持续集成环境自动化部署分布式服务
  2. 使用docker+compose+jenkins+gitlab+spring cloud实现微服务的编排、持续集成和动态扩容
  3. 使用FastDFS搭建分布式文件系统(高可用、负载均衡)
  4. 搭建高可用nginx集群和Tomcat负载均衡
  5. 使用mycat实现Mysql数据库的主从复制、读写分离、分表分库、负载均衡和高可用
  6. Spring boot整合Elastic search实现全文检索和大数据分析 输入图片说明

特别篇:分布式事务和并发控制

  1. 基于可靠消息最终一致性实现分布式事务(activeMQ)
  2. Spring boot dubbo整合seata实现分布式事务输入图片说明

包含组件nacos v1.1.0 + seata v0.7.1 +spring boot dubbo v2.7.5 效果图

  1. Spring cloud alibaba v2.1.0整合seata实现分布式事务 输入图片说明

包含组件nacos v1.1.0 + seata v0.7.1 +spring cloud alibaba v2.1.0 效果图

  1. 并发控制:数据库锁机制和事务隔离级别的实现输入图片说明
  2. 并发控制:使用redis实现分布式锁 输入图片说明
  3. 并发控制:使用zookeeper实现分布式锁
  4. 并发控制:Java多线程编程实例
  5. 并发控制:使用netty实现高性能NIO通信

视频教程

输入图片说明

在线观看(含源码和PPT)