ElasticSearch
远处的海亲吻着天
从事JAVA软件开发
展开
-
35.数据建模实战之通过数据冗余实现用户与博客的关联
1、构造冗余的用户和博客数据第二种建模方式:用冗余数据,采用文档数据模型,进行数据建模,实现用户和博客的关联PUT /website/users/1{ "name": "小鱼儿", "email": "xiaoyuer@sina.com", "birthday": "1980-01-01"}PUT /website/blogs/...原创 2020-03-02 09:51:58 · 207 阅读 · 0 评论 -
34.数据建模实战之通过应用层join实现用户与博客的关联
1、构造用户与博客数据在构造数据模型的时候,还是将有关联关系的数据,然后分割为不同的实体,类似于关系型数据库中的模型案例背景:博客网站, 我们会模拟各种用户发表各种博客,然后针对用户和博客之间的关系进行数据建模,同时针对建模好的数据执行各种搜索/聚合的操作PUT /website/users/1{ "name": "小鱼儿", "email": "xiaoyuer@s...原创 2020-03-01 18:40:02 · 396 阅读 · 0 评论 -
33.数据建模实战之关系型数据库与document类型数据模型对比
关系型数据库的数据模型es的document数据模型public class Department { private Integer deptId; private String name; private String desc; private List<Employee> employees;}public cla...原创 2020-03-01 16:49:18 · 229 阅读 · 0 评论 -
32.聚合数据分析之海量bucket优化机制:从深度优先到广度优先
当buckets数量特别多的时候,深度优先和广度优先的原理我们的数据,是每个演员的每个电影的评论每个演员的评论的数量 --> 每个演员的每个电影的评论的数量评论数量排名前10个的演员 --> 每个演员的电影取到评论数量排名前5的电影{ "aggs" : { "actors" : { "terms" : { "field"...原创 2020-03-01 16:46:14 · 210 阅读 · 0 评论 -
31.聚合数据分析之fielddata预加载机制以及序号标记预加载
如果真的要对分词的field执行聚合,那么每次都在query-time现场生产fielddata并加载到内存中来,速度可能会比较慢我们是不是可以预先生成加载fielddata到内存中来???1、fielddata预加载POST /test_index/_mapping/test_type{ "properties": { "test_field": { ...原创 2020-03-01 11:33:39 · 138 阅读 · 0 评论 -
30.聚合数据分析之fielddata filter的细粒度内存加载控制
POST /test_index/_mapping/my_type{ "properties": { "my_field": { "type": "text", "fielddata": { "filter": { "frequency": { "min": 0.01,...原创 2020-03-01 11:32:30 · 158 阅读 · 0 评论 -
29.聚合数据分析之fielddata内存控制以及circuit breaker短路器
1、fielddata核心原理fielddata加载到内存的过程是lazy加载的,对一个analzyed field执行聚合时,才会加载,而且是field-level加载的一个index的一个field,所有doc都会被加载,而不是少数doc不是index-time创建,是query-time创建2、fielddata内存限制indices.fielddata.cache.size...原创 2020-03-01 11:31:29 · 208 阅读 · 0 评论 -
28.聚合数据分析之string field聚合实验以及fielddata原理初探
1、对于分词的field执行aggregation,发现报错。。。GET /test_index/test_type/_search { "aggs": { "group_by_test_field": { "terms": { "field": "test_field" } } }}{ "error...原创 2020-03-01 11:30:06 · 278 阅读 · 0 评论 -
27.聚合数据分析之doc value机制内核级原理深入探秘
1、doc value原理(1)index-time生成PUT/POST的时候,就会生成doc value数据,也就是正排索引(2)核心原理与倒排索引类似正排索引,也会写入磁盘文件中,然后呢,os cache先进行缓存,以提升访问doc value正排索引的性能如果os cache内存大小不足够放得下整个正排索引,doc value,就会将doc value的数据写入磁盘文件中...原创 2020-03-01 11:27:47 · 226 阅读 · 0 评论 -
26.聚合数据分析之基于doc value正排索引的聚合内部原理
聚合分析的内部原理是什么????aggs,term,metric avg max,执行一个聚合操作的时候,内部原理是怎样的呢?用了什么样的数据结构去执行聚合?是不是用的倒排索引?搜索+聚合,写个示例GET /test_index/test_type/_search { "query": { "match": { "search_fi...原创 2020-03-01 11:26:57 · 197 阅读 · 0 评论 -
24.聚合数据分析值易并行聚合算法、三角选择原则、近似聚合算法
1、画图讲解易并行聚合算法:max易并行算法.png有些聚合分析的算法,是很容易就可以并行的,比如说max有些聚合分析的算法,是不好并行的,比如说,count(distinct),并不是说,在每个node上,直接就出一些distinct value,就可以的,因为数据可能会很多不易并行的算法.pnges会采取近似聚合的方式,就是采用在每个node上进行...原创 2020-03-01 11:16:03 · 287 阅读 · 0 评论 -
21.用function score自定义相关度分数算法
我们可以做到自定义一个function_score函数,自己将某个field的值,跟es内置算出来的分数进行运算,然后由自己指定的field来进行分数的增强给所有的帖子数据增加follower数量POST /forum/article/_bulk{ "update": { "_id": "1"} }{ "doc" : {"follower_num" : 5} }{ "upda...原创 2020-02-29 13:55:16 · 269 阅读 · 0 评论 -
20.四种常见的相关度分数优化方法
1、query-time boostGET /forum/article/_search{ "query": { "bool": { "should": [ { "match": { "title": { "query": "java spark", ...原创 2020-02-29 13:36:14 · 351 阅读 · 0 评论 -
19.Lucenne的相关度分数算法
1.lucene practical scoring functionpractical scoring function,来计算一个query对一个doc的分数的公式,该函数会使用一个公式来计算score(q,d) = queryNorm(q) · coord(q,d) · ∑ ( ...原创 2020-02-29 13:28:34 · 130 阅读 · 0 评论 -
25.ElasticSearch索引原理浅析(DocValues 和 Fielddata)
ElasticSearch使用的是倒排索引,既然是倒排索引,对应的肯定有正向索引,我们先来把这两个概念弄清楚正向索引正排索引表是以文档的ID为关键字,表中记录文档中每个字段的值信息,主要场景是通过查询id来把整条文档拿出来,一般mysql关系型数据库是这种方式来查询的正排表结构如下图所示这种组织方法在建立索引的时候结构比较简单,建立比较方便且易于维护,当对I...转载 2020-01-08 15:54:07 · 522 阅读 · 0 评论 -
22.es 聚合数据分析
bucket: 一个数据分组city name 北京 小李 北京 小王 上海 小张 上海 小丽 上海 小陈 基于city划分buckets划分出两个bucket,一个是北京bucket,一个是上海bucket北京bucket: 包含2个人上海bucket: 包含3个人按照某个字段进行bucket划分,那个字段的值相同的哪些数据...原创 2020-01-02 17:18:36 · 681 阅读 · 1 评论 -
23.es fuzzy模糊搜索
搜索的时候,可能输入的搜索文本会出现误拼写的情况doc1: hello worlddoc2: hello java搜索: hallo worldfuzzy搜索技术 --> 自动将拼写错误的搜索文本,进行纠正,纠正以后去尝试匹配索引中的数据POST /my_index/my_type/_bulk{ "index": { "_id": 1 }}{ "text": "Sur...原创 2019-12-29 21:31:48 · 2481 阅读 · 0 评论 -
elastic stack - Metricbeat 监控
一、Metricbeat 简介Metricbeat由模块和度量集组成。Metricbeat 模块定义了从特定服务(如Redis,Mysql等)收集数据的基本逻辑。该模块指定有关服务的详细信息,包括如何连接,收集指标的频率以及要收集的指标。安装下载wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch |...原创 2019-12-29 14:25:54 · 307 阅读 · 0 评论 -
elastic stack - Filebeat 入门之 配置
配置Filebeat为了配置Filebeat,你可以编辑配置文件filebeat.yml。还有一个完整的配置文件示例filebeat.reference.yml1. 指定运行哪个模块Filebeat提供了几种启用模块的不同方式:用modules.d目录下的配置启用模块 运行Filebeat的时候启用模块 用filebeat.yml启用模块配置1.1. 用modules...原创 2019-12-29 13:01:18 · 593 阅读 · 0 评论 -
elastic stack - Filebeat 入门之 Modules
Filebeat模块简化了公共日志格式的收集、解析和可视化。一个典型的模块(例如,对于Nginx日志)是由一个或多个fileset组成的(以Nginx为例,access 和 error)。一个fileset包含以下内容:Filebeat 输入配置,其中包含要默认的查找或者日志文件路径。这些默认路径取决于操作系统。Filebeat配置还负责在需要的时候拼接多行事件。 Elasticse...原创 2019-12-28 22:52:12 · 309 阅读 · 0 评论 -
18.es TF&IDF算法以及向量空间模型算法
1.boolean model类似and这种逻辑操作符,先过滤出包含指定term的docquery "hello world" --> 过滤 --> hello/world/hello&worldbool --> must/must not/should -->过滤-->包含/不包含/可能包含doc -->不打分数-->正或反 true o...原创 2019-12-22 21:17:45 · 1013 阅读 · 1 评论 -
17.es ngram分词机制实现index-time搜索推荐
1、ngram和index-time搜索推荐原理什么是ngramquick,5种长度下的ngramngram length=1,q u i c kngram length=2,qu ui ic ckngram length=3,qui uic ickngram length=4,quic uickngram length=5,quick什么是edge ngramquic...原创 2019-12-22 21:15:34 · 904 阅读 · 1 评论 -
16.es match_phrase_prefix实现search-time搜索推荐
搜索推荐,search as you type,搜索提示,解释一下什么意思hello w --> 搜索hello worldhello wehello winhello windhello doghello cathello w -->hello worldhello wehello winhello wind搜索推荐的功能百度 --> e...原创 2019-12-22 19:18:57 · 166 阅读 · 0 评论 -
15.前缀搜索、通配符搜索、正则搜索
1、前缀搜索C3D0-KD345C3K5-DFG65C4I8-UI365C3 --> 上面这两个都搜索出来 --> 根据字符串的前缀去搜索不用帖子的案例背景,因为比较简单,直接用自己手动建的新索引,给大家演示一下就可以了PUT my_index{ "mappings": { "my_type": { "properties": {...原创 2019-12-22 19:14:01 · 868 阅读 · 0 评论 -
14.混合使用match和近似匹配实现召回率与精准度的平衡、使用rescoring机制优化近似匹配搜索的性能
召回率比如你搜索一个java spark,总共有100个doc,能返回多少个doc作为结果,就是召回率,recall精准度比如你搜索一个java spark,能不能尽可能让包含java spark,或者是java和spark离的很近的doc,排在最前面,precision直接用match_phrase短语搜索,会导致必须所有term都在doc field中出现,而且距离在slop限...原创 2019-12-22 13:04:37 · 241 阅读 · 0 评论 -
13.es slop参数实现近似匹配以及原理剖析和相关实验
GET /forum/article/_search{ "query": { "match_phrase": { "title": { "query": "java spark", "slop": 1 } } }}slop的含...原创 2019-12-22 13:00:09 · 1407 阅读 · 1 评论 -
12.es phrase matching搜索技术(近似匹配)
近似匹配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 ...原创 2019-12-22 12:56:34 · 390 阅读 · 0 评论 -
elastic stack - Filebeat 入门之 构架和部署
Filebeat轻量型日志采集器,当您要面对成百上千、甚至成千上万的服务器、虚拟机和容器生成的日志时,请告别 SSH 吧。Filebeat 将为您提供一种轻量型方法,用于转发和汇总日志与文件,让简单的事情不再繁杂。Filebeat是本地文件的日志数据采集器,可监控日志目录或特定日志文件(tail file),并将它们转发给Elasticsearch或Logstatsh进行索引、kafka等。...原创 2019-12-18 19:42:10 · 261 阅读 · 0 评论 -
11.使用copy_to定制组合field解决cross-fields搜索弊端、使用原生cross_fields技术解决搜索弊端
第一个办法:用copy_to,将多个field组合成一个field问题其实就出在有多个field,有多个field以后,就很尴尬,我们只要想办法将一个标识跨在多个field的情况,合并成一个field即可。比如说,一个人名,本来是first_name,last_name,现在合并成一个full_name,不就ok了吗。。。。。PUT /forum/_mapping/article{...原创 2019-12-17 23:53:18 · 223 阅读 · 0 评论 -
10.es 基于multi_match+most_fields策略进行multi_field搜索 、使用most_fields策略进行cross-fields search的弊端
从best-fields换成most-fields策略best-fields策略,主要是说将某一个field匹配尽可能多的关键词的doc优先返回回来most-fields策略,主要是说尽可能返回更多field匹配到某个关键词的doc,优先返回回来POST /forum/_mapping/article{ "properties": { "sub_title": { ...原创 2019-12-17 23:27:53 · 514 阅读 · 0 评论 -
9.es基于dis_max实现best fields策略进行多字段搜索基于tie_breaker参数优化dis_max搜索结果基于multi_match语法实现dis_max+tie_breaker
1、为帖子数据增加content字段POST /forum/article/_bulk{ "update": { "_id": "1"} }{ "doc" : {"content" : "i like to write best elasticsearch article"} }{ "update": { "_id": "2"} }{ "doc" : {"content" : ...原创 2019-12-17 22:45:42 · 523 阅读 · 0 评论 -
8.es 多shard场景下relevance score不准确
如果你的一个index有多个shard的话,可能搜索结果会不准确如何解决该问题1、生产环境下,数据量大,尽可能实现均匀分配数据量很大的话,其实一般情况下,在概率学的背景下,es都是在多个shard中均匀路由数据的,路由的时候根据_id,负载均衡 比如说有10个document,title都包含java,一共有5个shard,那么在概率学的背景下,如果负载均衡的话,其实每个s...原创 2019-12-15 13:32:08 · 197 阅读 · 0 评论 -
4.es 在案例中实战基于range filter来进行范围过滤
1、为帖子数据增加浏览量的字段POST /forum/article/_bulk{ "update": { "_id": "1"} }{ "doc" : {"view_cnt" : 30} }{ "update": { "_id": "2"} }{ "doc" : {"view_cnt" : 50} }{ "update": { "_id": "3"} }{ "doc" : {"...原创 2019-12-14 21:32:21 · 969 阅读 · 0 评论 -
3.es 在案例中实战基于bool组合多个filter条件搜索以及terms搜索多个值以及多值搜索结果优化
准备数据:POST /forum/article/_bulk{ "index": { "_id": 1 }}{ "articleID" : "XHDK-A-1293-#fJ3", "userID" : 1, "hidden": false, "postDate": "2017-01-01" }{ "index": { "_id": 2 }}{ "articleID" : "KDKE-...原创 2019-12-14 16:52:44 · 2708 阅读 · 0 评论 -
Elasticsearch数据建模实战之对文件系统进行数据建模以及文件搜索实战
数据建模,对类似文件系统这种的有多层级关系的数据进行建模1、文件系统数据构造PUT /fs{ "settings": { "analysis": { "analyzer": { "paths": { "tokenizer": "path_hierarchy" } } } }pat...原创 2019-12-11 22:49:55 · 118 阅读 · 0 评论 -
elasticsearch nested 与 父子文档
1.问题背景在elasticsearch中,我们可以将密切相关的实体存储在单个文档中。 例如,我们可以通过传递一系列评论来存储博客文章及其所有评论。举例: 1{ 2"title":"InvestMoney", 3"body":"Pleasestartinvestingmoneyassoon...", 4"tags":["money","inves...翻译 2019-12-10 23:21:53 · 1017 阅读 · 0 评论 -
6.Elasticsearch match 基于term+bool实现的multiword搜索底层原理剖析
普通match如何转换为term+should{ "match": { "title": "java elasticsearch"}}使用诸如上面的match query进行多值搜索的时候,es会在底层自动将这个match query转换为bool的语法bool should,指定多个搜索词,同时使用term query{ "bool": { "should"...翻译 2019-04-08 15:05:15 · 168 阅读 · 0 评论 -
2.Elasticsearch 结构化搜索_filter执行原理深度剖析(bitset机制与caching机制)与过滤查询
1. 在倒排索引中查找搜索串,获取document list解析:date举例:倒排索引列表,过滤date为2017-02-02(filter:2017-02-02)。去倒排索引中查找,发现2017-02-02对应的document list是doc2、doc3。word doc1 doc2 doc32017-01-01 ...翻译 2019-04-08 15:34:54 · 218 阅读 · 0 评论 -
5.Elasticsearch 如何手动控制全文检索结果的精准度
全文检索的时候,进行多个值的检索,有两种做法,match query;should 控制搜索结果精准度:and operator,minimum_should_match POST /forum/article/_bulk{ "index": { "_id": 1 }}{ "articleID" : "XHDK-A-1293-#fJ3", "userID" : 1, "hidden":...翻译 2019-04-08 15:55:51 · 180 阅读 · 0 评论 -
7.Elasticsearch boost的搜索条件权重
搜索标题中包含java的帖子,同时呢,如果标题中包含hadoop或elasticsearch就优先搜索出来,同时呢,如果一个帖子包含java hadoop,一个帖子包含java elasticsearch,包含hadoop的帖子要比elasticsearch优先搜索出来知识点,搜索条件的权重,boost,可以将某个搜索条件的权重加大,此时当匹配这个搜索条件和匹配另一个搜索条件的docume...翻译 2019-04-08 17:58:14 · 13759 阅读 · 1 评论