你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
发现
分享
文章
活动
登录
ELK,萌萌哒
多条件多维度查询
Elasticsearch
| 作者
chibang
| 发布于2019年09月21日 | 阅读数:
4642
分享到:
QQ空间
新浪微博
微信
QQ好友
印象笔记
有道云笔记
有个业务场景,关系数据库中涉及的表有7个左右(表结构互不相同),平均每个表的数据量在500W左右,通过ES对这7个表数据做多条件、多维度的组合查询,包含聚合后按照数量查询(聚合目前是在应用程序中计算后写入ES)。该场景下在ES创建中对这7张表创建了nested结构的索引来实现需求,但发现该模式下扩展性太难,后续要加入新的表作为组合条件,很难实现。问下各位大神,有没有更好的方案支持该场景下的查询,要求查询响应快、扩展性高。谢谢
没有找到相关结果
已邀请:
与内容相关的链接
提交
1 个回复
doom
赞同来自:
laoyang360
个人的理解:ES很多性能很强,用到关联关系的表需要慎重;严重影响到性能;一般多表查询的处理策略有4中:
1.建多个库,手工代码做关联;优点:各表相互独立,扩展容易;缺点:业务逻辑都需要自己处理,关联层数多,数据量大的搜索不适合
2.宽表,合并所有的字段;优点:关联关系搜索方便,而且数据量大不影响;缺点:极不容易扩展,删除和更新复杂,很难维护;单文档容量大,有效字段比率少,影响IO性能;
3.父子文档:有层次关联的做父子文档;优点:可以做层次关系的关联,而且不用关联的时候相互独立,增加修改删除方便;缺点:关联关系也是昂贵的开销,影响性能;能够用于增删频繁的,查询少的业务;
4.nested嵌套,相当于一个java中字段为list对象,优点:查询性能好,没有很大关联关系的开销;缺点:单文档大,增加修改删除,很频繁不合适;适合用于很少对表做修改的业务;
ES多表查询,第一需要分析业务: 表的关联关系,每个表的增删状况,查询的的复杂程度,每个表的数据量级;
第二:多表方案选项,跟1的业务息息相关; es都能做,但是都不强,需要自己挑一个最合适的;
第三:后期维护方案:数据量的扩展,数据增删;能达到一个什么量级,这也关系到多表的选型方案;
一般上面,宽表和单表,大多数业务不适合,不建议使用;父子文档和嵌套,选型区别是:1. 修改频繁用父子文档,不频繁的用嵌套;2. 经常需要关联查询,优选嵌套;偶尔用一下关联用父子文档;
要回复问题请先
登录
或
注册
发起人
chibang
活动推荐
Jun
17
搜索客 Meetup 讲师招募(长期有效)
线上
·
6-17 周一
·
进行中
Apr
25
第25届 GOPS 全球运维大会暨研运数智化技术峰会 · 深圳站
深圳
·
4-25 周五
·
报名中
Apr
26
【未来智造:机器⼈软件系统技术前沿】OSC源创会·深圳站·112期
深圳
·
4-26 周六
·
报名中
May
15
Workshop | 搜索服务统一治理(跨引擎多个集群监控管理、流量管控、服务编排)
北京
·
5-15 周四
·
报名中
May
16
2025XCOPS智能运维管理人年会
广州
·
5-16 周五
·
报名中
相关问题
elasticsearch scroll查询的原理没太懂
query_string查询疑问
请问查询人与人之间合作度,这种聚合查询怎么写呢?
聚合查询如何优化
Elasticsearch查询时指定分词器
es scroll查询全部数据问题
Kibana中如何查询展现非重复信息的数量???例如访问日志的IP地址数量
query+aggs查询性能问题
elasticSearch5.X javaAPI rangeQuery分区间查询,最终用了一种最low的方法凑合?不知大神们有没有好解决方案?
es 数据在被修改之后 再发起查询还是会查到未修改前的数据
es6.4版本相较于es5.4版本查询性能上的优化有什么改变吗
问题状态
最新活动:
2019-09-28 13:16
浏览:
4642
关注:
2
人
1 个回复
doom
赞同来自: laoyang360
1.建多个库,手工代码做关联;优点:各表相互独立,扩展容易;缺点:业务逻辑都需要自己处理,关联层数多,数据量大的搜索不适合
2.宽表,合并所有的字段;优点:关联关系搜索方便,而且数据量大不影响;缺点:极不容易扩展,删除和更新复杂,很难维护;单文档容量大,有效字段比率少,影响IO性能;
3.父子文档:有层次关联的做父子文档;优点:可以做层次关系的关联,而且不用关联的时候相互独立,增加修改删除方便;缺点:关联关系也是昂贵的开销,影响性能;能够用于增删频繁的,查询少的业务;
4.nested嵌套,相当于一个java中字段为list对象,优点:查询性能好,没有很大关联关系的开销;缺点:单文档大,增加修改删除,很频繁不合适;适合用于很少对表做修改的业务;
ES多表查询,第一需要分析业务: 表的关联关系,每个表的增删状况,查询的的复杂程度,每个表的数据量级;
第二:多表方案选项,跟1的业务息息相关; es都能做,但是都不强,需要自己挑一个最合适的;
第三:后期维护方案:数据量的扩展,数据增删;能达到一个什么量级,这也关系到多表的选型方案;
一般上面,宽表和单表,大多数业务不适合,不建议使用;父子文档和嵌套,选型区别是:1. 修改频繁用父子文档,不频繁的用嵌套;2. 经常需要关联查询,优选嵌套;偶尔用一下关联用父子文档;