<返回更多

springboot集成elasticsearch

2022-05-30    小鱼科技3
加入收藏

介绍

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" }}}
      ]
    }
  }
}

 

springboot集成elasticsearch

构建索引


springboot集成elasticsearch

搜狗日志列表


springboot集成elasticsearch

经纬度搜索


springboot集成elasticsearch

数据统计分析


springboot集成elasticsearch

各国家城市列表


springboot集成elasticsearch

has parent搜索


springboot集成elasticsearch

has child搜索

源代码地址:Spring-elastic_search: Spring boot整合Elasticsearch实现全文检索和大数据分析

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>