Elasticsearch
文章平均质量分 85
Elasticsearch 深入浅出,ELKStack及Solr企业级搜索引擎实战。
夏目 "
一个对coding有独特追求的人。
展开
-
2 万字详解,吃透 ES!
搜索引擎是对数据的检索,所以我们先从生活中的数据说起。和。:也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。指具有固定格式或有限长度的数据,如数据库,元数据等。:又可称为全文数据,不定长或无固定格式,不适于由数据库二维表来表现,包括所有格式的办公文档、XML、HTML、word文档,邮件,各类报表、图片和咅频、视频信息等。说明:如果要更细致的区分的话,XML、HTML可划分为。原创 2024-01-06 09:57:11 · 1140 阅读 · 0 评论 -
Elasticsearch 之 Elasticsearch面试总结
一、Elasticsearch监控的常用工具我大概用过如下的监控插件(注意此处插件的版本,不同es的版本,监控工具的安装方式可能不一样) 1. bigdesk 统计分析和图表化elasticsearch的集群信息状态 https://blog.csdn.net/wuzhiwei549/article/details/83211715 2. hea...转载 2018-10-20 11:54:14 · 14487 阅读 · 2 评论 -
Elasticsearch 之 监控Elasticsearch性能
本文翻译原文地址:https://www.datadoghq.com/blog/monitor-elasticsearch-performance-metrics/ 本文是关于监控Elasticsearch性能的4部分系列文章的第1部分。 在这篇文章中,我们将介绍Elasticsearch的工作原理,并探索您应该监控的关键指标。 第2部分介绍了如何收集Elastic...翻译 2018-10-20 11:43:26 · 6713 阅读 · 0 评论 -
Elasticsearch 之(53) Java API 基于geo_shape根据坐标查找 坐标落在店铺范围的店铺
根据坐标查找 坐标落在店铺范围的店铺构建mappingPUT /example{ "mappings": { "doc": { "properties": { "location": { "type": "geo_shape"原创 2018-06-04 17:49:13 · 8604 阅读 · 4 评论 -
Elasticsearch 之(52) Java API 基于geo point地理位置对周围汽车4S店进行搜索
比如我们有很多的4s店,然后呢给了用户一个app,在某个地方的时候,可以根据当前的地理位置搜索一下,自己附近的4s店相关es restful api 可以参考:《Elasticsearch 之(39)引入geo point地理位置数据类型_矩形范围查询》《Elasticsearch 之(40)酒店o2o搜索案例以及搜索指定区域内的酒店》《Elasticsearch 之(41)搜索距离当前位置一定范...原创 2018-06-02 10:10:14 · 4158 阅读 · 0 评论 -
Elasticsearch 之(51) Java API 基于bool 对汽车品牌进行多种条件的组合搜索
多种条件组合查询,其实就要用到我们之前《 Elasticsearch 之(5)kibana多种搜索方式》中讲解的es bool api。package com.es.app;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.client.transport.TransportClie...原创 2018-06-01 14:47:48 · 709 阅读 · 0 评论 -
Elasticsearch 之(50) Java API 对汽车品牌进行全文检索、精准查询和前缀搜索
其实就要用到我们之前《 Elasticsearch 之(21)前缀搜索、通配符搜索、正则搜索、推荐搜索 和 模糊搜索》中讲解的语法package com.es.app;import java.net.InetAddress;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.clie...原创 2018-06-01 14:10:50 · 889 阅读 · 0 评论 -
Elasticsearch 之(49) Java API 基于search template实现按品牌分页查询模板
es的config/scripts目录下,预先保存这个复杂的模板,后缀名是.mustache,文件名是page_query_by_brand{ "from": {{from}}, "size": {{size}}, "query": { "match": { "brand.keyword": "{{brand}}" } }}在《 Elasti原创 2018-06-01 13:55:07 · 2752 阅读 · 0 评论 -
Elasticsearch 之(48) Java API 基于scroll实现月度销售数据批量下载
比如说,现在要下载大批量的数据,从es,放到excel中,我们说,月度,或者年度,销售记录,很多,比如几千条,几万条,几十万条其实就要用到我们之前《 Elasticsearch 之(5)kibana多种搜索方式》中讲解的es scroll api,对大量数据批量的获取和处理就是要看宝马的销售记录2条数据,做一个演示,每个批次下载一条宝马的销售记录,分2个批次给它下载完package com.es....原创 2018-06-01 13:44:22 · 472 阅读 · 0 评论 -
Elasticsearch 之(47) Java API 基于bulk实现多4S店销售数据批量上传
业务场景:有一个汽车销售公司,拥有很多家4S店,这些4S店的数据,都会在一段时间内陆续传递过来,汽车的销售数据,现在希望能够在内存中缓存比如1000条销售数据,然后一次性批量上传到es中去初始化数据PUT /car_shop/sales/1{ "brand": "宝马", "name": "宝马320", "price": 320000, "produce_dat.原创 2018-06-01 13:32:10 · 547 阅读 · 0 评论 -
Elasticsearch 之(46) Java API 基于mget实现多辆汽车的配置与价格对比
场景,一般来说,我们都可以在一些汽车网站上,或者在混合销售多个品牌的汽车4S店的内部,都可以在系统里调出来多个汽车的信息,放在网页上,进行对比mget,一次性将多个document的数据查询出来,放在一起显示,多个汽车的型号,一次性拿出了多辆汽车的信息package com.es.app;import org.elasticsearch.action.get.GetResponse;imp...原创 2018-06-01 12:58:04 · 374 阅读 · 0 评论 -
Elasticsearch 之(45) Java API 基于upsert实现汽车最新价格的调整
做一个汽车零售数据的mapping,我们要做的第一份数据,其实汽车信息PUT /car_shop{ "mappings": { "cars": { "properties": { "brand": { "type": "text",原创 2018-06-01 11:22:44 · 1389 阅读 · 0 评论 -
Elasticsearch 之(44) Java API client集群自动探查以及汽车零售店案例背景
1、client集群自动探查默认情况下,是根据我们手动指定的所有节点,依次轮询这些节点,来发送各种请求的,如下面的代码,我们可以手动为client指定多个节点TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new InetSocketTransportAddress(In...原创 2018-06-01 10:17:47 · 310 阅读 · 0 评论 -
Elasticsearch 之(43) Java API 实现 ES 的 增删改查、聚合分析
1、maven依赖<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.2.2</version></dependency&原创 2018-06-01 09:36:18 · 2173 阅读 · 0 评论 -
Elasticsearch 之(42) 统计当前位置每个距离范围内有多少家酒店
最后一个知识点,基于地理位置进行聚合分析我的需求就是,统计一下,举例我当前坐标的几个范围内的酒店的数量,比如说举例我0~100m有几个酒店,100m~300m有几个酒店,300m以上有几个酒店一般来说,做酒店app,一般来说,我们是不是会有一个地图,用户可以在地图上直接查看和搜索酒店,此时就可以显示出来举例你当前的位置,几个举例范围内,有多少家酒店,让用户知道,心里清楚,用户体验就比较好m (me...原创 2018-06-01 09:34:35 · 1241 阅读 · 0 评论 -
Elasticsearch 之(41)搜索距离当前位置一定范围内的酒店
酒店o2o app,作为案例背景比如说,现在用户,所在的位置,是个地理位置的坐标,我是知道我的坐标的,app是知道的,android,地理位置api,都可以拿到当前手机app的经纬度现在就要搜索出,举例我200m,或者1公里内的酒店我们之前出去玩儿,都会用一些酒店o2o app,典型的代表,很多旅游app,一般来说,我们怎么搜索,到了一个地方,就会搜索说,我这里举例几百米,2公里内的酒店,搜索一下...原创 2018-05-31 22:47:36 · 2396 阅读 · 0 评论 -
Elasticsearch 之(40)酒店o2o搜索案例以及搜索指定区域内的酒店
稍微真实点的案例,酒店o2o app作为一个背景,用各种各样的方式,去搜索你当前所在的地理位置附近的酒店搜索指定区域范围内的酒店,比如说,我们可以在搜索的时候,指定两个地点,就要在东方明珠大厦和上海路组成的矩阵的范围内,搜索我想要的酒店PUT /hotel_app{ "mappings": { "hotels": { "properties": {...原创 2018-05-31 22:41:46 · 1426 阅读 · 0 评论 -
Elasticsearch 之(39)引入geo point地理位置数据类型_矩形范围查询
es支持基于地理位置的搜索,和聚合分析的举个例子,比如说,我们后面就会给大家演示一下,你现在如果说做了一个酒店o2o app,让你的用户在任何地方,都可以根据当前所在的位置,找到自己身边的符合条件的一些酒店,那么此时就完全可以使用es来实现,非常合适我现在在上海某个大厦附近,我要搜索到距离我2公里以内的5星级的带游泳池的一个酒店s,用es就完全可以实现类似这样的基于地理位置的搜索引擎1、建立geo...原创 2018-05-31 22:37:30 · 5572 阅读 · 2 评论 -
Elasticsearch 之(38)使用动态映射模板定制自己的映射策略
高级的用法比如说,我们本来没有某个type,或者没有某个field,但是希望在插入数据的时候,es自动为我们做一个识别,动态映射出这个type的mapping,包括每个field的数据类型,一般用的动态映射,dynamic mapping这里有个问题,如果说,我们其实对dynamic mapping有一些自己独特的需求,比如说,es默认来说,如经过识别到一个数字,field: 10,默认是搞成这个...原创 2018-05-31 22:30:20 · 3934 阅读 · 2 评论 -
Elasticsearch 之(37)基于completion suggest实现搜索提示
suggest,completion suggest,自动完成,搜索推荐,搜索提示 --> 自动完成,auto completionauto completion比如说我们在百度,搜索,你现在搜索“大话西游” --> 百度,自动给你提示,“大话西游电影”,“大话西游小说”, “大话西游手游”不用你把所有你想要输入的文本都输入完,搜索引擎会自动提示你可能是你想要搜索的那个文本comple...原创 2018-05-31 22:22:57 · 3571 阅读 · 0 评论 -
Elasticsearch 之(36)使用search template将搜索模板化
前言搜索模板,search template,高级功能,就可以将我们的一些搜索进行模板化,然后的话,每次执行这个搜索,就直接调用模板,给传入一些参数就可以了,如果不了解搜索语法的,可以先阅读《 Elasticsearch 之(5)kibana多种搜索方式》。1、search template入门search template:"{{field}}" : "{{value}}" ,设置search ...原创 2018-05-31 22:08:17 · 4599 阅读 · 1 评论 -
Elasticsearch 之(35)深入剖析搜索结果的highlight高亮显示
前言在《 Elasticsearch 之(5)kibana多种搜索方式》中粗略提到高亮搜索的基本用法,本篇将详细剖析搜索结果的highlight高亮显示。1、一个最基本的高亮例子建立mapping,设置IK分词器PUT /blog_website{ "mappings": { "blogs": { "properties": { "title": { ...原创 2018-05-31 13:52:53 · 9110 阅读 · 8 评论 -
Elasticsearch 之(34)基于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 term fr...原创 2018-05-31 13:22:22 · 3142 阅读 · 1 评论 -
Elasticsearch 之(33)document数据建模实战_文件搜索_嵌套关系_父子/祖孙关系数据
前言在《Elasticsearch 之(2)Elasticsearch核心概念》中简单提到了document 和 数据库db 数据模型的差别,本文将详细讲述集中常用的数据模型。文件搜索数据建模,对类似文件系统这种的有多层级关系的数据进行建模1、文件系统数据构造PUT /fs{ "settings": { "analysis": { "analyzer": { ...原创 2018-05-29 16:56:28 · 1222 阅读 · 2 评论 -
Elasticsearch 之(32)fielddata内存控制、预加载以及circuit breaker断路器
1、fielddata核心原理fielddata加载到内存的过程是lazy加载的,对一个analzyed field执行聚合时,才会加载,而且是field-level加载的一个index的一个field,所有doc都会被加载,而不是少数doc不是index-time创建,是query-time创建2、fielddata内存限制elasticsearch.yml: indices.fielddata...原创 2018-05-28 11:47:40 · 6337 阅读 · 0 评论 -
Elasticsearch 之(31)fielddata原理初探
1、《Elasticsearch 之(6)kibana嵌套聚合,下钻分析,聚合分析》提到 对于分词的field执行aggregation,发现报错GET /test_index/test_type/_search { "aggs": { "group_by_test_field": { "terms": { "field": "test_field" ...原创 2018-05-28 11:35:41 · 4839 阅读 · 0 评论 -
Elasticsearch 之(30)doc value机制内核级原理深入探秘
1、doc value原理(1)index-time生成PUT/POST的时候,就会生成doc value数据,也就是正排索引(2)核心原理与倒排索引类似正排索引,也会写入磁盘文件中,然后呢,os cache先进行缓存,以提升访问doc value正排索引的性能如果os cache内存大小不足够放得下整个正排索引,doc value,就会将doc value的数据写入磁盘文件中(3)性能问题:给j...原创 2018-05-28 11:20:20 · 1092 阅读 · 0 评论 -
Elasticsearch 之(29)基于doc value正排索引的聚合内部原理
聚合分析的内部原理是什么????aggs,term,metric avg max,执行一个聚合操作的时候,内部原理是怎样的呢?用了什么样的数据结构去执行聚合?是不是用的倒排索引?搜索+聚合,写个示例GET /test_index/test_type/_search { "query": { "match": { "search_field": "t...原创 2018-05-28 11:15:16 · 1331 阅读 · 1 评论 -
Elasticsearch 之(28)percentiles 以及 percentiles rank网站访问时延SLA统计
需求有一个网站,记录下了每次请求的访问的耗时,需要统计tp50,tp90,tp99tp50:50%的请求的耗时最长在多长时间tp90:90%的请求的耗时最长在多长时间tp99:99%的请求的耗时最长在多长时间设置索引,准备数据PUT /website{ "mappings": { "logs": { "properties": { ...原创 2018-05-28 10:49:13 · 3287 阅读 · 0 评论 -
Elasticsearch 之(27)cardinality算法之优化内存开销以及HLL算法
1、cardinality语法es,去重,cartinality metric,对每个bucket中的指定的field进行去重,取去重后的count,类似于count(distcint)cardinality,count(distinct),5%的错误率,性能在100ms左右{ "size" : 0, "aggs" : { "months" : { "date_...原创 2018-05-28 10:25:11 · 2789 阅读 · 0 评论 -
Elasticsearch 之(26)聚合数据分析_易并行聚合算法,三角选择原则,近似聚合算法
1、易并行聚合算法有些聚合分析的算法,是很容易就可以并行的,比如说max有些聚合分析的算法,是不好并行的,比如说,count(distinct),并不是说,在每个node上,直接就出一些distinct value,就可以的,因为数据可能会很多es会采取近似聚合的方式,就是采用在每个node上进行近估计的方式,得到最终的结论,cuont(distcint),100万,1050万/95万 -->...原创 2018-05-28 09:56:13 · 2074 阅读 · 0 评论 -
Elasticsearch 之(25)重写IK分词器源码来基于mysql热更新词库
热更新在上一节《IK分词器配置文件讲解以及自定义词库》自定义词库,每次都是在es的扩展词典中,手动添加新词语,很坑(1)每次添加完,都要重启es才能生效,非常麻烦(2)es是分布式的,可能有数百个节点,你不能每次都一个一个节点上面去修改es不停机,直接我们在外部某个地方添加新的词语,es中立即热加载到这些新词语热更新的方案(1)修改ik分词器源码,然后手动支持从mysql中每隔一定时间,自动加载新...原创 2018-05-25 14:51:14 · 6655 阅读 · 19 评论 -
Elasticsearch 之(24)IK分词器配置文件讲解以及自定义词库
1、ik配置文件ik配置文件地址:es/plugins/ik/config目录IKAnalyzer.cfg.xml:用来配置自定义词库main.dic:ik原生内置的中文词库,总共有27万多条,只要是这些单词,都会被分在一起quantifier.dic:放了一些单位相关的词suffix.dic:放了一些后缀surname.dic:中国的姓氏stopword.dic:英文停用词ik原生最重要的两个配...原创 2018-05-25 14:25:16 · 5451 阅读 · 0 评论 -
Elasticsearch 之(23)IK中文分词器的安装和使用
1、在elasticsearch中安装ik中文分词器(1)git clone https://github.com/medcl/elasticsearch-analysis-ik(2)git checkout tags/v5.2.0(3)mvn package(4)将target/releases/elasticsearch-analysis-ik-5.2.0.zip拷贝到es/plugins/i...原创 2018-05-25 14:12:08 · 1388 阅读 · 0 评论 -
Elasticsearch 之(22) 自定义相关度分数算法 和 常见的相关度分数优化方法
前言之前《lucene的相关度评分TF&IDF算法以及向量空间模型算法》,已经很了解整个es的相关度评分的算法了,算法思想,TF/IDF,vector model,boolean model; 实际的公式,query norm,query coordination,boost。自定义相关度分数算法我们可以做到自定义一个function_score函数,自己将某个field的值,跟es内置算...原创 2018-05-24 15:05:54 · 6749 阅读 · 0 评论 -
Elasticsearch 之(21)前缀搜索、通配符搜索、正则搜索、推荐搜索 和 模糊搜索
1、前缀搜索GET /forum/article/_search { "query": { "prefix": { "articleID": { "value": "KDKE" } } }}{ "took": 52, "timed_out": false, "_shards&a原创 2018-05-24 11:19:57 · 9046 阅读 · 0 评论 -
Elasticsearch 之(20)proximity match 近似匹配
1、什么是近似匹配两个句子java is my favourite programming language, and I also think spark is a very good big data system.java spark are very related, because scala is spark's programming language and scala is al...原创 2018-05-22 17:59:44 · 2100 阅读 · 0 评论 -
Elasticsearch 之(19)cross-fields策略
cross-fields搜索,一个唯一标识,跨了多个field。比如一个人,标识,是姓名;一个建筑,它的标识是地址。姓名可以散落在多个field中,比如first_name和last_name中,地址可以散落在country,province,city中。跨多个field搜索一个标识,比如搜索一个人名,或者一个地址,就是cross-fields搜索初步来说,如果要实现,可能用most_fields...原创 2018-05-22 17:36:46 · 2636 阅读 · 0 评论 -
Elasticsearch 之(18)best fields,most fields策略
基于dis_max实现best fields策略进行多字段搜索1、为帖子数据增加content字段POST /forum/article/_bulk{ "update": { "_id": "1"} }{ "doc" : {"content" : "i like to write best elasticsearch article"} }{ "update":原创 2018-05-22 17:31:47 · 2156 阅读 · 1 评论 -
Elasticsearch 之(17)relevance score
relevance score (相关性分数)需求:搜索标题中包含java的帖子,同时呢,如果标题中包含hadoop或elasticsearch就优先搜索出来,同时呢,如果一个帖子包含java hadoop,一个帖子包含java elasticsearch,包含hadoop的帖子要比elasticsearch优先搜索出来知识点,搜索条件的权重,boost,可以将某个搜索条件的权重加大,此时当匹配这...原创 2018-05-22 17:20:42 · 579 阅读 · 0 评论