摘要: 语法: POST /test_index/_mapping/test_type { "properties": { "test_field": { "type": "text", "fielddata": { "filter": { "frequency": { "min": 0.01, "min_ 阅读全文
posted @ 2018-03-10 21:30 outback123 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 1、做一个实验,引出来为什么需要nested object 冗余数据方式的来建模,其实用的就是object类型,我们这里又要引入一种新的object类型,nested object类型 博客,评论,做的这种数据模型 PUT /website/blogs/6 { "title": "花无缺发表的一篇帖 阅读全文
posted @ 2018-03-10 21:29 outback123 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 本节没有弄懂,要复习 阅读全文
posted @ 2018-03-10 21:28 outback123 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 课程大纲 一、共享锁和排他锁的说明 共享锁:这份数据是共享的,可以多个线程同时过来获取同一个数据的,然后对这个数据执行读操作。 排他锁:是排他的操作,只能一个线程获取排他锁,然后执行增删改操作。 读写锁的分离 如果只是要读取数据的话,那么任意多个线程都可以同时读取数据,每个线程都可以加一个共享锁,但 阅读全文
posted @ 2018-03-10 21:28 outback123 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 对类似文件系统这种的有多层级关系的数据进行建模 对上述模型数据进行搜索 一、文件系统数据构造 1、新建index,并自定义analyzer 新建一个index,自定义一个名为paths的analyzer,这个analyzer所用的分词器是path_hierarchy。语法: PUT / 阅读全文
posted @ 2018-03-10 21:27 outback123 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 主要知识点 悲观锁的简要说明 全局锁实验 全局锁的优缺点及适用场景 一、悲观锁的简要说明 悲观锁不象悲观锁那样基于version进行并发控制,而是直接加锁,加锁后只有加锁的线程可以使用该index(或type),其他线程不同同时使用,只有当这个线程解锁之后,其他线程才能恢复使用,本节合文件系统建模的 阅读全文
posted @ 2018-03-10 21:27 outback123 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 本节的需求:对已建好冗余数模型的数据进行分组。 本节的语法没有学懂 一、构造更多测试数据 PUT /website/users/3 { "name": "黄药师", "email": "huangyaoshi@sina.com", "birthday": "1970-10-24" } PUT /we 阅读全文
posted @ 2018-03-10 21:26 outback123 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 在构造数据模型的时候,将有关联关系的数据分割为不同的实体,类似于关系型数据库中的模型。 案例背景:博客网站,一个网站可能有多个用户,一个用户会发多篇博客,此时最好的方式是建立users和blogs两个type,分别存入用户信息和博客信息,这种方式就类型于关系型数据库中的建模方式,如果要查询特定用户的 阅读全文
posted @ 2018-03-10 21:25 outback123 阅读(641) 评论(0) 推荐(0) 编辑
摘要: 主要知识: 冗余数据建模 对已建好的冗余数据中进行查询 一、冗余数据建模 构造冗余的用户和博客数据,第二种建模方式就是利用冗余数据,采用文档数据模型进行数据建模,实现用户和博客的关联。 PUT /website/users/1 { "name": "小鱼儿", "email": "xiaoyuer@ 阅读全文
posted @ 2018-03-10 21:25 outback123 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 现假设有如下两个类: class Department(object): def __init__(self, dept_id, name, desc, employees=[]): self.dept_id = dept_id self.name = name self.desc = desc s 阅读全文
posted @ 2018-03-10 21:24 outback123 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 如果真的要对分词的field执行聚合,那么每次都在query-time的同时由es生成fielddata并加载到内存中来,速度可能会比较慢,性能很差,改善性能的方式就是预先生成fielddata值并加载到内存中去。 一、fielddata预加载 POST /test_index/_mapping/t 阅读全文
posted @ 2018-03-10 21:23 outback123 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 当buckets数量特别多的时候,深度优先和广度优先的原理,图解 假如我们有如下数据数据:每个演员的每个电影的评论。 现在我们的需求是找到前10名的演员所演的电影的评论。这是一个两层聚合题。 查询语句体如下: { "aggs" : { "actors" : { "terms" : { "field" : "actors", ... 阅读全文
posted @ 2018-03-10 21:23 outback123 阅读(360) 评论(1) 推荐(0) 编辑
摘要: 语法: POST /test_index/_mapping/test_type { "properties": { "test_field": { "type": "text", "fielddata": { "filter": { "frequency": { "min": 0.01, "min_ 阅读全文
posted @ 2018-03-10 21:20 outback123 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 课程大纲 fielddata加载 fielddata内存限制 监控fielddata内存使用 circuit breaker 一、fielddata加载 fielddata加载到内存的过程是lazy加载的,也就是说对一个analzyed field执行聚合时才会加载,不是在建立index时加载。而且 阅读全文
posted @ 2018-03-10 21:17 outback123 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 直接对分词的term进行聚合后果 设置fielddata=true 直接用.keyword进行聚合 doc value 的性能问题 一、直接对分词的term进行聚合后果 对于分词的field执行aggregation,发现报错。。。 1、新建一条数据(隐式创建一个索引和type) POST /test_index/te... 阅读全文
posted @ 2018-03-10 21:16 outback123 阅读(715) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: doc value的原理 doc value性能优化 一、doc value原理 1、 生成时间:index-time生成 PUT/POST的时候,就会生成doc value数据,也就是正排索引 2、 核心原理与倒排索引类似 正排索引,也会写入磁盘文件中,然后呢,os cache先进行缓存,以提升访问doc v... 阅读全文
posted @ 2018-03-10 21:15 outback123 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 主要知识点: 本节没有太懂,以后复习时补上 聚合分析的内部原理是什么????aggs,term,metric avg max,执行一个聚合操作的时候,内部原理是怎样的呢?用了什么样的数据结构去执行聚合?是不是用的倒排索引? 搜索+聚合,写个示例 GET /test_index/test_type/_search { "query": { "match": {... 阅读全文
posted @ 2018-03-10 21:14 outback123 阅读(247) 评论(0) 推荐(0) 编辑