
Nosql
代码届彭于晏
代码届彭于晏
展开
-
mysql中schema与数据类型优化以及服务器性能检测
1.数据类型优化 应该遵循的原则: -更小的通常更好 -简单就好:mysql内建的类型而不是字符串来存储时间。整数比字符串操作代价低 -尽量避免null: -使用枚举代替字符串类型 -datetime和timestamp:除了特殊情况之外,应该尽量使用timestamp,前者占8个字节,后者4个字节2.范式: 1.第一范式(确保每列保持原子性)第一范式是最基本的范式。如果数据库表中的所原创 2017-12-04 15:48:57 · 169 阅读 · 0 评论 -
elasticsearch(18) es中一些聚合操作
GET /tvs/sales/_search{ "size":0, "aggs": { "group_by_color": { (指定分组) "terms": { "field": "color" }, "aggs": { "avg_price": { (分组下原创 2018-10-29 20:55:55 · 1595 阅读 · 0 评论 -
elasticsearch(15) match_phase的使用 slop的使用
1.如果一个文档中有一个field 使 I like java spark如果使用match 搜索java spark,那么会进行分词,如果使用term,精确匹配JAVA spark也不能搜索,这时候需要用到match_phase因为文档在分词的时候会记录位置,match_phase是根据分词的位置来实现的,具体:近似匹配1、什么是近似匹配两个句子java is my ...原创 2018-10-24 20:15:28 · 2554 阅读 · 0 评论 -
elasticsearch(16) 前缀/正则,通配符搜索,ngram
1.前缀get my_index1/my_type/_search{ "query":{ "prefix": { "title": { "value": "c3g" } } }}前缀越短,doc越多,前缀搜索不参与分数计算 2.通配符?代表任意字符* 0个或者多个字符举例:get my_index1/m...原创 2018-10-24 21:08:06 · 518 阅读 · 0 评论 -
elasticsearch(24) search template 模板化
搜索模板,search template,高级功能,就可以将我们的一些搜索进行模板化,然后的话,每次执行这个搜索,就直接调用模板,给传入一些参数就可以了1、search template入门GET /blog_website/blogs/_search/template{ "inline" : { "query": { "match" : { ...原创 2018-11-06 11:41:26 · 333 阅读 · 1 评论 -
elasticsearch(26) 定制自己的dynamic mapping
比如说,我们本来没有某个type,或者没有某个field,但是希望在插入数据的时候,es自动为我们做一个识别,动态映射出这个type的mapping,包括每个field的数据类型,一般用的动态映射,dynamic mapping这里有个问题,如果说,我们其实对dynamic mapping有一些自己独特的需求,比如说,es默认来说,如经过识别到一个数字,field: 10,默认是搞成这个fie...原创 2018-11-06 11:42:26 · 141 阅读 · 0 评论 -
elasticsearch(27)geo 相关
put my_index{ "mappings":{ "my_type":{ "properties":{ "location":{ "type":"geo_point" ----指定是这种类型的type } } } }}put my_index/my_type/1{原创 2018-11-06 13:55:28 · 134 阅读 · 0 评论 -
elasticsearch(19) 聚合操作的一些坑
1.如果某个field进行了分词,那么就没有正排索引,不能进行聚合操作,可以使用两种方式解决a.利用keywordb.建立mapping时把fielddata=true 这时候会建立正排索引 POST /test_index/_mapping/my_type{ "properties": { "my_field": { "type": "text",...原创 2018-11-02 14:16:21 · 3145 阅读 · 0 评论 -
elasticsearch(20) 数据建模
1、文件系统数据构造PUT /fs{ "settings": { "analysis": { "analyzer": { "paths": { "tokenizer": "path_hierarchy" } } } }}path_hierarchy tokenizer讲解/原创 2018-11-02 14:44:03 · 219 阅读 · 0 评论 -
elaticsearch (21) elasticsearch的nested object
1、做一个实验,引出来为什么需要nested object冗余数据方式的来建模,其实用的就是object类型,我们这里又要引入一种新的object类型,nested object类型博客,评论,做的这种数据模型PUT /website/blogs/6{ "title": "花无缺发表的一篇帖子", "content": "我是花无缺,大家要不要考虑一下投资房产和买股票的事情...原创 2018-11-02 17:50:12 · 247 阅读 · 0 评论 -
elasticsearch(21) 父子关系文档
1.nested object的建模,有个不好的地方,就是采取的是类似冗余数据的方式,将多个数据都放在一起了,维护成本就比较高parent child建模方式,采取的是类似于关系型数据库的三范式类的建模,多个实体都分割开来,每个实体之间都通过一些关联方式,进行了父子关系的关联,各种数据不需要都放在一起,父doc和子doc分别在进行更新的时候,都不会影响对方一对多关系的建模,维护起来比较...原创 2018-11-02 17:51:17 · 529 阅读 · 0 评论 -
elasticsearch(22) es中的term vector
1、term vector介绍获取document中的某个field内的各个term的统计信息term information: term frequency in the field, term positions, start and end offsets, term payloadsterm statistics: 设置term_statistics=true; total t...原创 2018-11-05 19:41:00 · 1690 阅读 · 0 评论 -
elasticsearch(12) elasticsearch中dis_max 和 tie_break的使用
插入这样两组数据PUT /my_index/my_type/1{ "title": "Quick brown rabbits", "body": "Brown rabbits are commonly seen."}PUT /my_index/my_type/2{ "title": "Keeping pets healthy", "原创 2018-10-24 10:27:56 · 1767 阅读 · 0 评论 -
elasticsearch(11)boost控制权重和多shard情况下socre不一致的原理
需求:搜索标题中包含java的帖子,同时呢,如果标题中包含hadoop或elasticsearch就优先搜索出来,同时呢,如果一个帖子包含java hadoop,一个帖子包含java elasticsearch,包含hadoop的帖子要比elasticsearch优先搜索出来知识点,搜索条件的权重,boost,可以将某个搜索条件的权重加大,此时当匹配这个搜索条件和匹配另一个搜索条件的docum...原创 2018-10-24 10:23:34 · 717 阅读 · 0 评论 -
elasticsearch(11) bool /range/控制搜索精准度(and operator ,minimum_should_match)
预备条件POST /forum/article/_bulk{ "index": { "_id": 1 }}{ "articleID" : "XHDK-A-1293-#fJ3", "userID" : 1, "hidden": false, "postDate": "2017-01-01" }{ "index": { &q原创 2018-10-21 14:03:14 · 1596 阅读 · 0 评论 -
elasticsearch(1)总体架构
1.倒排索引 熟悉mysql的索引的都知道,mysql的查询是通过在一大堆文字中查询关键词,我叫他正排索引,比如我们执行操作select * from t_books where name like ‘%java’; 这句话的工作流程是在name字段的内容到模糊查询条件。这种查询首先无法使用到mysql的索引,因为查询效率会比较低。 elasticsearch底层运用了lucence,而luc原创 2017-12-04 13:51:05 · 380 阅读 · 0 评论 -
elasticsearch(2)一些注意点和一些关键词
1.NRT, 近实时,从写入数据到数据尅一被检索到有1秒的delay,基于es的查询可以达到毫秒级2.Es的删除不是物理删除,只是标记成delelted 物理上没删除,当数据越来越多的时候才会删除,貌似和HbASE一样。3.es通过version乐观锁控制并发4.es的external version用法:?version=1&version_type=external ...原创 2018-10-11 10:22:22 · 419 阅读 · 0 评论 -
elasticsearch(3) 路由规则与写一致性原理和qu'orum 。deep paging 问题
1.一个index会被分成多个分片, 所以一个document只能放在一个shard中,当document创建的时候决定把这个document放在哪个shard上,这个就是路由 路由算法 shard = hash(routing) % number of primary_shard 举个例子:一个index有3个primary shard一个请求会带过来一个 routing,默...原创 2018-10-11 19:32:55 · 299 阅读 · 0 评论 -
elasticsearch(4)mapping 相关
1.analyzed 分词not_analyzed 不分词no 不能搜索2.put /company/emp/2{ "address":{ "country":"china", "province":"guangdongsheng", "city":"guangzhoushi" }, "name":&原创 2019-02-11 14:20:49 · 190 阅读 · 0 评论 -
elasticsearch(7) elasticsearch相关度规则、scroll、bouncing result mapping root object /自定义dynamic策略
1.TF 单词频率一个string field中单词出现的次数越多,相关度越高2.IDF整个索引中这个单词出现的个数越多,相关度越低3.FLstring field长度越长,相关度越低查看相关度相关分数计算可以用如下命令get ecommerce/producer/3/_explain{ "query":{ "match": { "produc...原创 2018-10-17 21:22:46 · 976 阅读 · 0 评论 -
redis(1) redis的一些小功能
1,慢查询分析redis提供了slowlog-log-slower-than和slowlog-max-len配置解决预设阈值和慢查询的最大保存记录2.BitmapsBitmaps用位来保存一些信息。3.HyperLogLog利用很小的空间来统计总数,但是会有一些误差4.事务multi会把multi和exec中的命令包起来,其中任何一个出错误,整个事务会回滚re...原创 2018-10-10 23:02:28 · 115 阅读 · 0 评论 -
elasticsearch(6)string field索引两次来解决字符串排序问题
如果对一个string field进行排序,结果往往不准确,因为分词后是多个单词,再排序就不是我们想要的结果了。貌似会采用分词后的term的第一个term进行排序。 通常解决方案是,将一个string field建立两次索引,一个分词,用来进行搜索;一个不分词,用来进行排序 PUT /website { "mappings": { "article": { ...原创 2018-10-17 16:35:17 · 502 阅读 · 0 评论 -
elasticsearch(8) 如果切换索引,应用不停机
1.实际项目中我们可能会遇见一开始mapping指定的type错了,但是mapping不能修改,这时候可以先将旧的index设置一个别名java应用中采用这个别名,然后利用scroll把旧索引中的数据导入,利用bulk api将数据导入新的正确type的index中,然后再将原来的别名引用导新index中,这样对于java应用是无感知的。、...原创 2018-10-20 13:53:31 · 691 阅读 · 0 评论 -
elasticsearch(10) es内核:写入原理
1.document先写入导内存buffer中,同时写translog日志,每隔一秒钟把buffer中的数据刷入index segment file中,index segment file中的数据会立马进入os cache中,内存buffer被清空,此时,segment 中的文件就可以呗搜索了,这就意味着document从被写入到可以被搜索需要一秒种,如果要更改这个属性,可以执行以下操作PUT...原创 2018-10-20 17:21:40 · 772 阅读 · 0 评论 -
elasticsearch(17) 几种优化查询分数得方法
1.加boost权重2.重构查询语句3.nagtive boost 负相关分数4.constant_score 固定分数对相关度评分进行调节和优化的常见的4种方法1、query-time boostGET /forum/article/_search{ "query": { "bool": { "should": [ { ...原创 2018-10-25 20:15:26 · 2447 阅读 · 0 评论 -
elasticsearch(9) filter 和terms
现在es 5.2版本,type=text,默认会设置两个field,一个是field本身,比如articleID,就是分词的;还有一个的话,就是field.keyword,articleID.keyword,默认不分词,会最多保留256个字符(1)根据用户ID搜索帖子GET /forum/article/_search{ "query" : { "constant...原创 2018-10-21 13:15:03 · 3590 阅读 · 0 评论 -
elasticsearch(23) highlit相关
1、一个最基本的高亮例子PUT /blog_website{ "mappings": { "blogs": { "properties": { "title": { "type": "text", "analyzer": "ik_max_word"原创 2018-11-05 19:41:34 · 136 阅读 · 0 评论