-
产品及方案 产品及方案
-
数据驱动型组织通过体系化的方法构建全域数据能力,实现数据驱动运营,重塑组织生产力
- 行业方案
- 典型方案
- 产品
-
数据驱动型组织
- 服务与支持
- 社区
- 合作伙伴
- 关于爱数
请选择咨询类型
扫码关注
爱数技术支持中心公众号
我们将在 24 小时之内联系你。
术业有专攻,海量数据查询还得用专门的搜索引擎,这其中ElasticSearch是当之无愧的王者。它主要有以下三个特点:
GET _analyze
{
"analyzer": "ik_max_word",
"text": ["中文分词语"]
}
结果
{
"tokens" : [
{
"token" : "中文",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "分词",
"start_offset" : 2,
"end_offset" : 4,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "词语",
"start_offset" : 3,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 2
}
]
}
在对原始日志进行分词拆分成相应的team后,如何从海量的term中查询所需数据,遍历一遍显然也是不现实的,于是乎就有了term
dictionary。ElasticSearch为了能快速查找到 term,将所有的 term 排了一个序,用 B+树建立索引词典指向被索引的数据。但是如
果把整个 term dictionary 放在内存,内存资源肯定不足以存储,因此又引申出term index的概念。使用 "term index -> term
dictionary -> postings list" 的倒排索引结构,通过 FST 压缩放入内存,进一步提高搜索效率。
当然以上只是AnyRobot底层使用的ElasticSearch中倒排索引的基本理论,在实际产品中,还需要进一步考虑如何压缩数据,如何实
现快速联合查询等一系列问题。产品中通过Frame of Reference技术,压缩posting list 的空间消耗。使用 Roaring Bitmap 技术
来缓存搜索结果,保证高频 filter 查询速度的同时降低存储空间消耗。
在联合查询时,在有 filter cache 的情况下,会直接利用位图的原生特性快速求交并集得到联合查询结果,否则使用 skip list 对多个
postings list 求交并集,跳过遍历成本并且节省部分数据的解压缩 cpu 成本。
由于篇幅限制,本文就不对以上技术做具体原理讲解。
同时由于AnyRobot云原生架构,原生支持分布式,可以通过水平扩容,提升数据读写并发能力,提供更高的搜索性能
在海量日志新中快速检索所需信息,是定位问题的第一步。AnyRobot利用底层ElasticSearch作为搜索引擎,实现的百万数据量的秒
级检索,可以帮助用户快速定位关键信息,减少MTTRS。同时数据查询也是数据分析第一步,AnyRobot通过对系统海量数据查询分
析,帮助用户实现丰富的业务场景分析。
请就本文对您的益处进行评级: