elasticsearch 的介绍 就不啰嗦,大家可以上官网看。官网地址如下:

What is Elasticsearch? | Elasticsearch Guide [7.16] | Elastic

因为最近做的业务,数据结构比较复杂 而且量大,因为查询 聚合统计问题,最后考虑 适用elasticsearch 提升业务功能查询统计效率。

场景:品牌名称 是数组类型   品牌类型 也是数据类型  ,数据有1200万左右 数据类型如下

根据输入的名称 统计 名称所函盖的分类,并且每个分类的数量。

例如 输入 C   第二列带有C字母的数据  搜索出180行数据满足 涵盖的分类有5, 30, 32, 35, 43,然后每个分类的数量都加1

开始使用mysql 的 json格式 带二级索引,结果从600多万的数据搜索出3w数据 进行统计 需要20秒左右,而且这个时间 会随着匹配的数据越多而增加时间。让我不得不考虑使用es 看看效果如何 ,一下是测试结果

数据总量

 

took 是查询耗时,单位毫秒,total 是命中总数量  一下是分类 的聚合统计

查询语句如下:


  "query":{
    "bool":{
      "should":[
                {
                    "match":{
                        "brandName":{
                            "query":"Ac"
                        }
                    }
                },
                {
                    "wildcard":{
                        "brandName.keyword":"*Ac*"
                    }
                }
            ],
      "minimum_should_match":"50%",
      "filter":{
        "bool": {
          "must_not":{
            "term":{
              "brandType":9
            }
          }
        }
      }
    }
  },
  "size": 10000,
  "aggs":{
      "type_count":{
          "terms":{
              "field":"brandType",
              "size":10000
          }
      }
  }
}

es 在本地 不存在网络延迟的方面,效率很高,基本在百万级别数据 ,查询 和聚合统计 耗时在500毫秒以内。

关于es 与 spring boot框架整合,请看下一篇 

springboot 整合 elasticsearch 一 安装elasticsearch_q1035331653的博客-CSDN博客

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐