- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Elasticsearch 在企业协作服务中的应用实践
展开查看详情
1 .Elasticsearch 在企业协 作服务中的应⽤用实践
2 .我是谁 Who am I ?
3 .• 宓⽂文捷 • github.com/orangemi • weixin: orangemi • ⼀一个喜欢研究各种技术的⾕谷粉
4 .我来⾃自哪⾥里里 Where do I come from ?
5 .• https://www.teambition.com • 团队协作⼯工具创导者 • Teambition 是⼀一个简单,⾼高效的项⽬目协作⼯工具,你可以在 这⾥里里管理理项⽬目,跟踪任务进度,存储项⽬目⽂文件,让你的团 队协作更更⾼高效 • 2015年年 被苹果公司评为年年度最佳应⽤用
6 .⽤用户情景
7 . 搜索机票 • 数据:机票数据 • 条件:航班,起⻜飞降落,时间范围,价格范围,国内/国际 • 排序:时间,价格,航空公司 • 聚合:⽆无
8 . 搜索⽂文献 • 数据:⽂文献数据 • 条件:包含⽂文字,作者 • 排序:相关度,偶尔有时间, 作者 • 聚合:作者,标签
9 . 业务价值&产品需求 • ⼤大海海捞针,获得洞洞察 • 易易⽤用的任务筛选需求、降低任务管理理维护成本 • 精细的任务导出需求,低成本关注成员进展 • 跨项⽬目任务汇总需求,商业报告应⽤用⽀支撑
10 . 搜索任务 • 数据:任务 • 条件:包含⽂文字,截⽌止时间,参与⼈人员,评论内容,⾃自定 义字段(时间字段,⽂文本字段,数字字段) • 排序:相关度,时间,数字字段,⾃自定义字段 • 聚合:按时间维度,按数字范围,按⼈人员,按⾃自定义字段
11 .什什么是任务 固定字段: ⼈人员,时间,⽂文本 ⾃自定义字段: ⽂文本,选项,时间,数字 隐藏字段:权限 评论动态
12 . 筛选条件 按照⾃自定义字段搜索 固定字段搜索条件 时间字段过滤器器 可能有⽂文本,数字,⽇日期
13 . 问题 Problems 梳理理产品需求,把握需求难点
14 . 权限 Privileges • 不不可以访问的任务 • 可以访问的任务 • 管理理员 • (允许⽤用户建⽴立⾃自⼰己的权限模型) • 权限模型变化的数据结构不不太容易易处理理
15 . Schemaless Database • Teambition的搜索 = 固定字段 + ⾃自定义字段。 • ⽤用户在任务管理理系统⾥里里创建的内容⼏几乎是⽆无规则的
16 . 数据量量 • > 80M Documents • > 10k Fields
17 . 解决⽅方案 Solutions 梳理理产品需求,把握需求难点,难点转化操作
18 .(存哪⾥里里) 存什什么 怎么存 怎么查
19 .• Elasticsearch是⼀一个⾼高度可扩展开源全⽂文搜索和分析引擎, 它允许⽤用户快速,实时地存储,搜索和分析⼤大量量数据。 • ES通常⽤用作为具有复杂的搜索功能和要求的应⽤用程序提供 的底层引擎/技术。
20 .数据模型 Model
21 .固定字段
22 . ⾃自定义字段 fid string date keyword number 1 abc 2 ae29c 3 2017-05-04 4 10.4 • Nested Object • 不不同类型分别存 • 性能问题?
23 . 权限模型 User / Role Resource • ⽤用户持钥匙 • 资源带有锁 • 任意把对上 • 就是有权限
24 .数据同步 Data Streaming
25 . Event Sourcing • Command and Query Responsibility Segregation • 根据事件,获取数据当前状态(扩展字段) • 保证最终⼀一致性 • Kafka / RabbitMQ • binlog / oplog
26 .查询 Query
27 . TQL的建⽴立 • Teambition Query Language • SQL / JQL / Elasticsearch SQL • 简化 和 优化 • 开发喜欢,甚⾄至直接给⽤用户
28 . 看⼀一些例例⼦子 • dueDate < 7d • dueDate < 7d AND executorId = currentUser() • cf:阶段 IN (TODO, DOING) • text ~ 关键词 • GROUP SUM(storyPoint) BY executorId
29 . TQL的组成 text ~ 搜索 AND executorId = currentUser() Field Value Logic Operation • 条件表达式 [conditionExpr] • 聚合表达式 [groupExpr],排序表达式 [orderExpr] • https://orangemi.github.io/teambition-tql/tql.html