elasticsearch 数据建模
一对多数据关系映射:
也可以分开来存放:
第一次搜索,会得到很多个中间结果,之后再进行处理,这个时候的性能就不怎么好了。
但是这两种方式各自有优缺点:
数据不冗余,维护方便,应用层join,如果关联数据过多,导致查询过大,性能很差 反之亦然。
一般来说,对于es这种NoSQL类型的数据存储来讲,都是冗余模式....
对于文件系统的构造:
path_hierarchy tokenizer:
例如: /a/b/c/d --> path_hierarchy -> /a/b/c/d, /a/b/c, /a/b, /a
创建分词器:
创建mapping
添加数据
进行搜索
构建内嵌式object数据
标注好type
而不是
案例:
按照评论日期进行bucket划分,然后拿到每个月的评论的评分的平均值
父子关系建模:
指定父的id,这样就能路由到同一个shard中了。
搜索有1980年以后出生的员工的研发中心
搜索有名叫张三的员工的研发中心
搜索有至少2个以上员工的研发中心
搜索在中国的研发中心的员工
统计每个国家的喜欢每种爱好的员工有多少个
祖父孙三层关系建模
各自都指定父id进行路由,保证了在一个shard上。
搜索有爬山爱好的员工所在的国家