05 2018 档案

摘要:酒店o2o app,作为案例背景比如说,现在用户,所在的位置,是个地理位置的坐标,我是知道我的坐标的,app是知道的,android,地理位置api,都可以拿到当前手机app的经纬度现在就要搜索出,举例我200m,或者1公里内的酒店我们之前出去玩儿,都会用一些酒店o2... 阅读全文
posted @ 2018-05-31 22:48 91vincent 阅读(161) 评论(0) 推荐(0) 编辑
摘要:稍微真实点的案例,酒店o2o app作为一个背景,用各种各样的方式,去搜索你当前所在的地理位置附近的酒店搜索指定区域范围内的酒店,比如说,我们可以在搜索的时候,指定两个地点,就要在东方明珠大厦和上海路组成的矩阵的范围内,搜索我想要的酒店PUT /hotel_app{ ... 阅读全文
posted @ 2018-05-31 22:42 91vincent 阅读(423) 评论(0) 推荐(0) 编辑
摘要:es支持基于地理位置的搜索,和聚合分析的举个例子,比如说,我们后面就会给大家演示一下,你现在如果说做了一个酒店o2o app,让你的用户在任何地方,都可以根据当前所在的位置,找到自己身边的符合条件的一些酒店,那么此时就完全可以使用es来实现,非常合适我现在在上海某个大... 阅读全文
posted @ 2018-05-31 22:38 91vincent 阅读(314) 评论(0) 推荐(0) 编辑
摘要:高级的用法比如说,我们本来没有某个type,或者没有某个field,但是希望在插入数据的时候,es自动为我们做一个识别,动态映射出这个type的mapping,包括每个field的数据类型,一般用的动态映射,dynamic mapping这里有个问题,如果说,我们其实... 阅读全文
posted @ 2018-05-31 22:30 91vincent 阅读(253) 评论(0) 推荐(0) 编辑
摘要:suggest,completion suggest,自动完成,搜索推荐,搜索提示 --> 自动完成,auto completionauto completion比如说我们在百度,搜索,你现在搜索“大话西游” --> 百度,自动给你提示,“大话西游电影”,“大话西游小... 阅读全文
posted @ 2018-05-31 22:23 91vincent 阅读(914) 评论(0) 推荐(2) 编辑
摘要:前言搜索模板,search template,高级功能,就可以将我们的一些搜索进行模板化,然后的话,每次执行这个搜索,就直接调用模板,给传入一些参数就可以了,如果不了解搜索语法的,可以先阅读《 Elasticsearch 之(5)kibana多种搜索方式》。1、sea... 阅读全文
posted @ 2018-05-31 22:08 91vincent 阅读(1021) 评论(0) 推荐(0) 编辑
摘要:前言在《 Elasticsearch 之(5)kibana多种搜索方式》中粗略提到高亮搜索的基本用法,本篇将详细剖析搜索结果的highlight高亮显示。1、一个最基本的高亮例子建立mapping,设置IK分词器PUT /blog_website{ "mapping... 阅读全文
posted @ 2018-05-31 13:53 91vincent 阅读(738) 评论(0) 推荐(0) 编辑
摘要:1、term vector介绍获取document中的某个field内的各个term的统计信息term information: term frequency in the field, term positions, start and end offsets, t... 阅读全文
posted @ 2018-05-31 13:22 91vincent 阅读(195) 评论(0) 推荐(0) 编辑
摘要:前言在《Elasticsearch 之(2)Elasticsearch核心概念》中简单提到了document 和 数据库db 数据模型的差别,本文将详细讲述集中常用的数据模型。文件搜索数据建模,对类似文件系统这种的有多层级关系的数据进行建模1、文件系统数据构造PUT ... 阅读全文
posted @ 2018-05-29 16:56 91vincent 阅读(236) 评论(0) 推荐(0) 编辑
摘要:1、fielddata核心原理fielddata加载到内存的过程是lazy加载的,对一个analzyed field执行聚合时,才会加载,而且是field-level加载的一个index的一个field,所有doc都会被加载,而不是少数doc不是index-time创... 阅读全文
posted @ 2018-05-28 11:48 91vincent 阅读(362) 评论(0) 推荐(0) 编辑
摘要:1、《Elasticsearch 之(6)kibana嵌套聚合,下钻分析,聚合分析》提到 对于分词的field执行aggregation,发现报错GET /test_index/test_type/_search { "aggs": { "group_by_t... 阅读全文
posted @ 2018-05-28 11:36 91vincent 阅读(337) 评论(0) 推荐(0) 编辑
摘要:1、doc value原理(1)index-time生成PUT/POST的时候,就会生成doc value数据,也就是正排索引(2)核心原理与倒排索引类似正排索引,也会写入磁盘文件中,然后呢,os cache先进行缓存,以提升访问doc value正排索引的性能如果o... 阅读全文
posted @ 2018-05-28 11:20 91vincent 阅读(238) 评论(0) 推荐(0) 编辑
摘要:聚合分析的内部原理是什么????aggs,term,metric avg max,执行一个聚合操作的时候,内部原理是怎样的呢?用了什么样的数据结构去执行聚合?是不是用的倒排索引?搜索+聚合,写个示例GET /test_index/test_type/_search {... 阅读全文
posted @ 2018-05-28 11:15 91vincent 阅读(250) 评论(0) 推荐(0) 编辑
摘要:需求有一个网站,记录下了每次请求的访问的耗时,需要统计tp50,tp90,tp99tp50:50%的请求的耗时最长在多长时间tp90:90%的请求的耗时最长在多长时间tp99:99%的请求的耗时最长在多长时间设置索引,准备数据PUT /website{ "map... 阅读全文
posted @ 2018-05-28 10:49 91vincent 阅读(225) 评论(0) 推荐(0) 编辑
摘要:1、cardinality语法es,去重,cartinality metric,对每个bucket中的指定的field进行去重,取去重后的count,类似于count(distcint)cardinality,count(distinct),5%的错误率,性能在100... 阅读全文
posted @ 2018-05-28 10:25 91vincent 阅读(663) 评论(0) 推荐(0) 编辑
摘要:1、易并行聚合算法有些聚合分析的算法,是很容易就可以并行的,比如说max有些聚合分析的算法,是不好并行的,比如说,count(distinct),并不是说,在每个node上,直接就出一些distinct value,就可以的,因为数据可能会很多es会采取近似聚合的方式... 阅读全文
posted @ 2018-05-28 09:56 91vincent 阅读(215) 评论(0) 推荐(0) 编辑
摘要:热更新在上一节《IK分词器配置文件讲解以及自定义词库》自定义词库,每次都是在es的扩展词典中,手动添加新词语,很坑(1)每次添加完,都要重启es才能生效,非常麻烦(2)es是分布式的,可能有数百个节点,你不能每次都一个一个节点上面去修改es不停机,直接我们在外部某个地... 阅读全文
posted @ 2018-05-25 14:51 91vincent 阅读(366) 评论(0) 推荐(0) 编辑
摘要:1、ik配置文件ik配置文件地址:es/plugins/ik/config目录IKAnalyzer.cfg.xml:用来配置自定义词库main.dic:ik原生内置的中文词库,总共有27万多条,只要是这些单词,都会被分在一起quantifier.dic:放了一些单位相... 阅读全文
posted @ 2018-05-25 14:25 91vincent 阅读(294) 评论(0) 推荐(0) 编辑
摘要:1、在elasticsearch中安装ik中文分词器(1)git clone https://github.com/medcl/elasticsearch-analysis-ik(2)git checkout tags/v5.2.0(3)mvn package(4)将... 阅读全文
posted @ 2018-05-25 14:12 91vincent 阅读(243) 评论(0) 推荐(0) 编辑
摘要:前言之前《lucene的相关度评分TF&IDF算法以及向量空间模型算法》,已经很了解整个es的相关度评分的算法了,算法思想,TF/IDF,vector model,boolean model; 实际的公式,query norm,query coordination,b... 阅读全文
posted @ 2018-05-24 15:06 91vincent 阅读(290) 评论(0) 推荐(0) 编辑
摘要:1、前缀搜索搜索包含KDKE前缀的articleID GET /forum/article/_search { "query": { "prefix": { "articleID": { "value": "KDKE" } ... 阅读全文
posted @ 2018-05-24 11:20 91vincent 阅读(597) 评论(0) 推荐(0) 编辑
摘要:1、什么是近似匹配两个句子java is my favourite programming language, and I also think spark is a very good big data system.java spark are very rela... 阅读全文
posted @ 2018-05-22 18:00 91vincent 阅读(195) 评论(0) 推荐(0) 编辑
摘要:cross-fields搜索,一个唯一标识,跨了多个field。比如一个人,标识,是姓名;一个建筑,它的标识是地址。姓名可以散落在多个field中,比如first_name和last_name中,地址可以散落在country,province,city中。跨多个fie... 阅读全文
posted @ 2018-05-22 17:37 91vincent 阅读(153) 评论(0) 推荐(0) 编辑
摘要:基于dis_max实现best fields策略进行多字段搜索1、为帖子数据增加content字段POST /forum/article/_bulk{ "update": { "_id": "1"} }{ "doc" : {"content" : "i like to... 阅读全文
posted @ 2018-05-22 17:32 91vincent 阅读(174) 评论(0) 推荐(0) 编辑
摘要:relevance score (相关性分数)需求:搜索标题中包含java的帖子,同时呢,如果标题中包含hadoop或elasticsearch就优先搜索出来,同时呢,如果一个帖子包含java hadoop,一个帖子包含java elasticsearch,包含had... 阅读全文
posted @ 2018-05-22 17:21 91vincent 阅读(238) 评论(0) 推荐(0) 编辑
摘要:(1)在倒排索引中查找搜索串,获取document listdate来举例word doc1 doc2 doc32017-01-01 * *2017-02-02 * *2017-03-03 * * *filter:2017-02-0... 阅读全文
posted @ 2018-05-22 17:15 91vincent 阅读(158) 评论(0) 推荐(0) 编辑
摘要:(1)数据写入buffer(2)commit point(3)buffer中的数据写入新的index segment(4)等待在os cache中的index segment被fsync强制刷到磁盘上(5)新的index sgement被打开,供search使用(6)... 阅读全文
posted @ 2018-05-22 16:55 91vincent 阅读(296) 评论(0) 推荐(0) 编辑
摘要:创建索引的语法PUT /my_index{ "settings": { ... any settings ... }, "mappings": { "type_one": { ... any mappings ... }, "t... 阅读全文
posted @ 2018-05-22 16:50 91vincent 阅读(139) 评论(0) 推荐(0) 编辑
摘要:1、boolean model类似and这种逻辑操作符,先过滤出包含指定term的docquery "hello world" --> 过滤 --> hello / world / hello & worldbool --> must/must not/should ... 阅读全文
posted @ 2018-05-22 16:37 91vincent 阅读(288) 评论(0) 推荐(0) 编辑
摘要:query string分词query string必须以和index建立时相同的analyzer进行分词query string对exact value和full text的区别对待 (第10节中详细阐述过)date:exact value_all:full tex... 阅读全文
posted @ 2018-05-22 16:28 91vincent 阅读(464) 评论(0) 推荐(0) 编辑
摘要:核心的数据类型stringbyte,short,integer,longfloat,doublebooleandatedynamic mapping (动态生成mapping)true or false --> boolean123 --> long123.45 ... 阅读全文
posted @ 2018-05-22 16:21 91vincent 阅读(259) 评论(0) 推荐(0) 编辑
摘要:倒排索引核心原理doc1:I really liked my small dogs, and I think my mom also liked them.doc2:He never liked any dogs, so I hope that my mom will... 阅读全文
posted @ 2018-05-21 17:19 91vincent 阅读(227) 评论(0) 推荐(0) 编辑
摘要:document 路由 (1)document路由到shard上是什么意思?(2)路由算法:shard = hash(routing) % number_of_primary_shards举个例子,一个index有3个primary shard,P0,P1,P2每次增... 阅读全文
posted @ 2018-05-18 16:18 91vincent 阅读(197) 评论(0) 推荐(0) 编辑
摘要:partial update 原理 和 优点es,其实是有个内置的脚本支持的,可以基于groovy脚本实现各种各样的复杂操作基于groovy脚本,如何执行partial updatees scripting module,后面会详细讲解,这里就只是初步讲解一下PUT... 阅读全文
posted @ 2018-05-18 14:48 91vincent 阅读(575) 评论(0) 推荐(0) 编辑
摘要:并发冲突问题剖析悲观锁与乐观锁两种并发控制方案基于_version进行乐观锁并发控制(1)_version元数据PUT /test_index/test_type/6{ "test_field": "test test"}{ "_index": "test_ind... 阅读全文
posted @ 2018-05-18 14:31 91vincent 阅读(5704) 评论(0) 推荐(1) 编辑
摘要:两个核心概念:bucket和metriccity name北京 小李北京 小王上海 小张上海 小丽上海 小陈基于city划分buckets划分出来两个bucket,一个是北京bucket,一个是上海bucket北京bucket:包含了2个人,小李,小王上海bucket... 阅读全文
posted @ 2018-05-18 14:06 91vincent 阅读(546) 评论(0) 推荐(0) 编辑
摘要:query string search搜索全部商品:GET /ecommerce/product/_searchtook:耗费了几毫秒timed_out:是否超时,这里是没有_shards:数据拆成了5个分片,所以对于搜索请求,会打到所有的primary shard(... 阅读全文
posted @ 2018-05-18 11:45 91vincent 阅读(805) 评论(0) 推荐(0) 编辑
摘要:简单的集群管理(1)快速检查集群的健康状况es提供了一套api,叫做cat api,可以查看es中各种各样的数据GET /_cat/health?vepoch timestamp cluster status node.total node.da... 阅读全文
posted @ 2018-05-18 11:27 91vincent 阅读(381) 评论(0) 推荐(0) 编辑
摘要:想介绍下synchronized的原理,但是又不知道从何下手,在网上看到一篇老外的文章,介绍了和线程同步相关的几个基础知识点。所以想把它翻译一下给大家看看。相信看过这些基础知识之后再看我后面要写的synchronized的原理就会好理解一点了。原文地址:How the... 阅读全文
posted @ 2018-05-08 16:02 91vincent 阅读(148) 评论(0) 推荐(0) 编辑