自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(172)
  • 收藏
  • 关注

转载 通过更改scrapy源码进行spider分发实现一个综合爬虫

最近我正写一个项目,项目的需求如下一,要爬取大约100种几百个网页的类容,并且这些网页的爬取频率不一样,有些一天爬取一次,有些一周爬取一次,二,网页爬取内容有变化,也就是说要爬取的内容会根据需求进行改变鉴于以上需求,但我们就一定的做成分步式,在多台服务器上运行,用scrapy框架的话就会几百个spider ,如果要使用多台服务器的话,那怎么样才能保证各个服务的利用率呢,如果在不同的服务器...

2018-05-01 17:07:00 207

转载 8.url路由

1、单一路由对应 url(r'^index/$', views.index), 这里要注意的是,/$ 表示只有只/结尾的才有效,如果把$符号去掉的话,只要是以index/开头都会匹配到这个url。 2、基于正则的路由 url(r'^index/(\d*)', views.index), url(r'^manage/(?P<name>\w...

2018-05-01 07:20:00 181

转载 6.连表结构

一、三种结构及应用场景 一对多:models.ForeignKey(其他表) 多对多:models.ManyToManyField(其他表) 一对一:models.OneToOneField(其他表) 应用场景: 一对多:当一张表中创建一行数据时,有一个单选的下拉框(可以被重复选择) 例如:创建用户信息时候,需要选择一个用户类型【普通用户】【金牌用户】【铂金用户】...

2018-05-01 07:19:00 140

转载 7.连表操作

利用双下划线和 _set 将表之间的操作连接起来 一、数据表结构 from django.db import models class UserProfile(models.Model): user_info = models.OneToOneField('UserInfo',on_delete=None) username ...

2018-05-01 07:19:00 185

转载 3.常用命令

一、创建django程序 创建项目:django-admin startproject sitenameIDE创建Django程序时,本质上都是自动执行上述命令 启动程序:python manage.py runserver 0.0.0.0   创建app: python manage.py startapp appname  python manage....

2018-05-01 07:18:00 92

转载 5.单表操作

一、基本增删改查操作 models.Tb1.objects.create(c1='xx', c2='oo') # 增加一条数据,可以接受字典类型数据 ** kwargs obj = models.Tb1(c1='xx', c2='oo') obj.save() #查 models.Tb1.objects.get(id=123) # 获取单条数据,不存在则...

2018-05-01 07:18:00 102

转载 4.model 字段

一、字段名 字段名类型参数 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列 必须填入参数 primary_ke...

2018-05-01 07:18:00 122

转载 1.目录介绍

创建项目进入项目文件件后执行如下命令 django-admin startproject MxOnline 其中 MxOnline为项目名字 新建项目后的目录 其中: templates文件夹中存放html文件manage.py 为我们启动django的命令所执行的文件settings.py是全局配置文件url.py是一级url路由文件w...

2018-05-01 07:17:00 86

转载 2.项目开始前配置

一、增加搜索路径 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, os.path.join(BASE_DIR, "apps")) sys.path.insert(0, os.path.join(BASE_DIR, "extra_apps...

2018-05-01 07:17:00 128

转载 56.fielddata filter的细粒度内存加载控制

语法: POST /test_index/_mapping/test_type { "properties": { "test_field": { "type": "text", "fielddata": { "filter": { "frequency": { "min": 0.01, "min_segment...

2018-03-10 21:30:00 87

转载 67.基于nested object实现博客与评论嵌套关系

1、做一个实验,引出来为什么需要nested object 冗余数据方式的来建模,其实用的就是object类型,我们这里又要引入一种新的object类型,nested object类型 博客,评论,做的这种数据模型 PUT /website/blogs/6 { "title": "花无缺发表的一篇帖子", "content": "我是...

2018-03-10 21:29:00 65

转载 65.基于document锁实现悲观锁并发控制

本节没有弄懂,要复习转载于:https://www.cnblogs.com/liuqianli/p/8542133.html

2018-03-10 21:28:00 93

转载 66.基于共享锁和排他锁实现悲观锁并发控制

课程大纲 一、共享锁和排他锁的说明 共享锁:这份数据是共享的,可以多个线程同时过来获取同一个数据的,然后对这个数据执行读操作。排他锁:是排他的操作,只能一个线程获取排他锁,然后执行增删改操作。 读写锁的分离 如果只是要读取数据的话,那么任意多个线程都可以同时读取数据,每个线程都可以加一个共享锁,但是这个时候,如果有线程要修...

2018-03-10 21:28:00 97

转载 64.基于全局锁实现悲观锁并发控制

主要知识点悲观锁的简要说明全局锁实验全局锁的优缺点及适用场景 一、悲观锁的简要说明 悲观锁不象悲观锁那样基于version进行并发控制,而是直接加锁,加锁后只有加锁的线程可以使用该index(或type),其他线程不同同时使用,只有当这个线程解锁之后,其他线程才能恢复使用,本节合文件系统建模的这个案例,把悲观锁的并发控制,3种锁粒度,都给大家...

2018-03-10 21:27:00 96

转载 63.文件系统进行数据建模以及文件搜索

主要知识点:对类似文件系统这种的有多层级关系的数据进行建模对上述模型数据进行搜索 一、文件系统数据构造 1、新建index,并自定义analyzer新建一个index,自定义一个名为paths的analyzer,这个analyzer所用的分词器是path_hierarchy。语法: PUT /fs { "settings...

2018-03-10 21:27:00 162

转载 62.对每个用户发表的博客进行分组

本节的需求:对已建好冗余数模型的数据进行分组。本节的语法没有学懂 一、构造更多测试数据 PUT /website/users/3 { "name": "黄药师", "email": "huangyaoshi@sina.com", "birthday": "1970-10-24" } PUT /website/blog...

2018-03-10 21:26:00 114

转载 61.通过数据冗余实现用户与博客的关联查询

主要知识:冗余数据建模对已建好的冗余数据中进行查询 一、冗余数据建模 构造冗余的用户和博客数据,第二种建模方式就是利用冗余数据,采用文档数据模型进行数据建模,实现用户和博客的关联。 PUT /website/users/1 { "name": "小鱼儿", "email": "xiaoyuer@sina.com", "bi...

2018-03-10 21:25:00 96

转载 60.通过应用层join实现用户与博客的关联

在构造数据模型的时候,将有关联关系的数据分割为不同的实体,类似于关系型数据库中的模型。案例背景:博客网站,一个网站可能有多个用户,一个用户会发多篇博客,此时最好的方式是建立users和blogs两个type,分别存入用户信息和博客信息,这种方式就类型于关系型数据库中的建模方式,如果要查询特定用户的博客,就只能在应用层通过join的方式进行查询。 一、放入数据 ...

2018-03-10 21:25:00 247

转载 59.关系型与document类型数据模型对比

现假设有如下两个类: class Department(object): def __init__(self, dept_id, name, desc, employees=[]): self.dept_id = dept_id self.name = name self.desc = desc self.employees = employee...

2018-03-10 21:24:00 121

转载 58.海量bucket优化机制:从深度优先到广度优先

当buckets数量特别多的时候,深度优先和广度优先的原理,图解 假如我们有如下数据数据:每个演员的每个电影的评论。现在我们的需求是找到前10名的演员所演的电影的评论。这是一个两层聚合题。 查询语句体如下:{ "aggs" : { "actors" : { "terms" : { "field" : ...

2018-03-10 21:23:00 125

转载 57.fielddata预加载机制以及序号标记预加载

如果真的要对分词的field执行聚合,那么每次都在query-time的同时由es生成fielddata并加载到内存中来,速度可能会比较慢,性能很差,改善性能的方式就是预先生成fielddata值并加载到内存中去。 一、fielddata预加载 POST /test_index/_mapping/test_type { "properties": { ...

2018-03-10 21:23:00 134

转载 56.fielddata filter的细粒度内存加载控制

语法: POST /test_index/_mapping/test_type { "properties": { "test_field": { "type": "text", "fielddata": { "filter": { "frequency": { "min": 0.01, "min_segment...

2018-03-10 21:20:00 153

转载 55.fielddata内存控制以及circuit breaker断路器

课程大纲fielddata加载fielddata内存限制监控fielddata内存使用circuit breaker 一、fielddata加载 fielddata加载到内存的过程是lazy加载的,也就是说对一个analzyed field执行聚合时才会加载,不是在建立index时加载。而且是field-level加载的。也就是当一个聚...

2018-03-10 21:17:00 144

转载 54.string field聚合以及fielddata原理初探

主要知识点: 直接对分词的term进行聚合后果 设置fielddata=true直接用.keyword进行聚合 doc value 的性能问题 一、直接对分词的term进行聚合后果 对于分词的field执行aggregation,发现报错。。。 1、新建一条数据(隐式创建一个索引和type)P...

2018-03-10 21:16:00 138

转载 53.doc value机制内核级原理深入探秘

主要知识点: doc value的原理 doc value性能优化 一、doc value原理 1、 生成时间:index-time生成 PUT/POST的时候,就会生成doc value数据,也就是正排索引 2、 核心原理与倒排索引类似 正排索引,也会写入磁盘文件中,然后呢,os ca...

2018-03-10 21:15:00 163

转载 52.基于doc value正排索引的聚合内部原理

主要知识点: 本节没有太懂,以后复习时补上 聚合分析的内部原理是什么????aggs,term,metric avg max,执行一个聚合操作的时候,内部原理是怎样的呢?用了什么样的数据结构去执行聚合?是不是用的倒排索引? 搜索+聚合,写个示例 GET /test_index/test_type/_search {"query...

2018-03-10 21:14:00 95

转载 51.percentiles rank以及网站访问时延SLA统计

主要知识点: percentile_ranks的用法 percentile的优化 一、percentile_ranks的用法 SLA:就是所提供的服务的标准。 比如一个网站的提供的访问延时的SLA,确保所有的请求100%都必须在200ms以内,在大公司内一般都是要求100%在200ms以内,如果超过1s,则需要升级到A级故障,代表网站的访...

2018-03-09 20:29:00 259

转载 50.percentiles百分比算法以及网站延时统计

主要知识点 percentiles的用法 现有一个需求:比如有一个网站,记录下了每次请求的访问的耗时,需要统计tp50,tp90,tp99tp50:50%的请求的耗时最长在多长时间 tp90:90%的请求的耗时最长在多长时间 tp99:99%的请求的耗时最长在多长时间 一、准备数据1、建立mappings P...

2018-03-09 20:28:00 247

转载 49.ardinality算法之优化内存开销以及HLL算法

主要知识点 precision_threshold参数的理解 HLL算法优化(hash) cardinality,count(distinct),5%的错误率,性能在100ms左右 一、precision_threshold 优化准确率和内存开销 GET /tvs/sales/_search{ "...

2018-03-09 20:27:00 251

转载 48.cartinality的基本用法

主要知识点 cartinality的用法 es去重用的是cartinality metric算法,对每个bucket中的指定的field进行去重,然后获取去重后的count,类似于count(distcint)cartinality的用法 GET /tvs/sales/_search{ "size": 0, "aggs...

2018-03-09 20:26:00 88

转载 47.易并行聚合算法,三角选择原则,近似聚合算法的基本慨念

主要知识点: 什么是易并行算法 什么是不易并行算法 什么是三角选择原则 什么是近似聚合算法 一、易并行聚合算法(如max) es是多分步式的结构的,所以当你做下个搜索或计算时都是会在各个node上执行,所以有些聚合分析的算法,是很容易就可以并行执行的,比如说max,你要在你的数据库中找一个最大的但,只需要两步 各个no...

2018-03-09 20:25:00 573

转载 46.颜色+品牌下钻分析时按最深层metric进行排序

主要知识点: 在做下钻分析时的排序需求,以颜色进行bucket,这里bucket里面的doc以其各品牌的平均价格排序, GET /tvs/sales/_search{ "size": 0, "aggs": {"group_by_color": { "terms": {"field": "color"}, "aggs...

2018-03-09 20:24:00 74

转载 45.自定义排序

主要知识点: 自定义排序 es默认是按照每个bucket的doc_count降序来排的,如果不指定就是这样排序。 但是假如说,我们现在统计出来每个颜色的电视的销售额,需要按照销售额降序排序,这样就需要自定义排序规则了。 语法:GET /tvs/sales/_search{ "size": 0, "aggs": {...

2018-03-09 20:23:00 80

转载 44.bucket filter:统计各品牌最近一个月的平均价格

课程大纲 GET /tvs/sales/_search { "size": 0, "query": { "term": { "brand": { "value": "长虹" } } }, "aggs": { "recent_150d": { "filter...

2018-03-09 20:23:00 94

转载 43.过滤+聚合:统计价格大于1200的电视平均价格

主要知识点: 搜索+聚合 过滤+聚合 需求是:找出所有价格大于1200元的电视,然后对之些电视求平均价格 语法:GET /tvs/sales/_search{ "size": 0, "query": { "constant_score": {"filter": {"range": {"price": {"gte": 1200}}...

2018-03-09 20:22:00 76

转载 42.global bucket的使用:单个品牌与所有品牌销量对比

主要知识点: _global bucket的使用 本例以搜索单个品牌和所有品牌的销量对比进行学习_global 。es在进行aggregation操作时都只只是在一个scope中进行聚合等操作,对于一个搜索+聚合的操作,那么这个聚合操作就必须在搜索操作所探索的结果范围内。因此就需要用到_global语法来对全部数据进行聚合。 本例要求得出两...

2018-03-09 20:21:00 113

转载 41.搜索+聚合:统计指定品牌下每个颜色的销量

主要知识点 学习搜索+聚合的知识 本节学习搜索+聚合知识,也就是搜索和聚合结合起来使用。类似于mysql中的 select count(*) from tvs.sales where brand like "%小米%" group by color 在es 任何的聚合,都必须在搜索出来的结果数据中之行,搜索结果就是聚合分析操作的scope...

2018-03-09 20:20:00 114

转载 40.下钻分析统计每季度每个品牌的销售额

主要知识点: data_historgram之后再进行下钻分析。 语法:GET /tvs/sales/_search { "size": 0, "aggs": { "group_by_sold_date": { "date_histogram": { "field": "sold_date", ...

2018-03-09 20:19:00 204

转载 39.date hitogram基础知识

主要知识点: date hitogram之统计每月电视销量 上一节讲到histogram,他是以数值进行分组。本节讲到以日期进行bucket分组操作,也就是说把连续的日期变成离散的日期区间,然后进行聚合分析操作。date histogram,按照我们指定的某个date类型的日期field,以及日期interval,按照一定的日期间隔,去划分bucket。...

2018-03-09 20:18:00 165

转载 38.histogram的基础用法

主要知识点 histogram的理解及用法 histogram:他的作用是把一些连续的数据划分为一定的区间范围,使用连续的数据离散化,然后这这样离散化的数据就可以做聚合分析操作,操作过程类似于terms,接收一个field,按照这个field的值划分区间,然后根据区间进行bucket分组操作。histogram的语法如下: "histogram":{...

2018-03-09 20:17:00 1165

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除