![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
elastic search
hsj1213522415
在校学生
展开
-
elastic search中nested object
1、为什么需要nested object?冗余数据方式的来建模,其实用的就是object类型;PUT /website/blogs/6{ "title": "花无缺发表的一篇帖子", "content": "我是花无缺,大家要不要考虑一下投资房产和买股票的事情啊。。。", "tags": [ "投资", "理财" ], "comments": [ { ...原创 2019-07-29 00:07:15 · 732 阅读 · 0 评论 -
elastic search数据建模-对文件系统进行数据建模以及文件搜索实战
需求:对类似文件系统这种的有多层级关系的数据进行建模;1、文件系统数据构造PUT /filesystem{ "settings": { "analysis": { "analyzer": { "paths": { "tokenizer": "path_hierarchy" } } } ...原创 2019-07-28 15:38:45 · 227 阅读 · 0 评论 -
elastic search数据建模-数据冗余实现数据关联
1、构建博客和用户的数据用冗余数据,采用文档数据模型,进行数据建模,实现用户和博客的关联PUT /website/users/1{ "name": "小鱼儿", "email": "xiaoyuer@sina.com", "birthday": "1980-01-01"}PUT /website/blogs/1{ "title": "小鱼...原创 2019-07-28 15:03:30 · 250 阅读 · 0 评论 -
elastic search数据建模-文档数据模型与关系型数据模型
对应java中的对象类型,部门,员工public class Department { private Integer deptId; private String name; private String desc; private List<Employee> employees;}public class Employee { private In...原创 2019-07-28 14:52:20 · 235 阅读 · 0 评论 -
elastic search中聚合查询的深度优先和广度优先
当buckets数量特别多的时候,深度优先和广度优先的那种比较合适?比如数据:每个演员的每个电影的评论需求:每个演员的评论的数量 --> 每个演员的每个电影的评论的数量评论数量排名前10个的演员 --> 每个演员的电影取到评论数量排名前5的电影1、深度优先的方式去执行聚合操作的原理: actor1 actor2 ...原创 2019-07-28 12:10:01 · 1003 阅读 · 0 评论 -
elastic search中_string field聚合实验以及fielddata原理初探
1、对于分词的field执行aggregation,报错。。。GET /test_index/test_type/_search { "aggs": { "group_by_test_field": { "terms": { "field": "test_field" } } }}{ "error": { "...原创 2019-07-28 12:04:58 · 313 阅读 · 0 评论 -
elastic search中易并行聚合算法,三角选择原则,近似聚合算法浅析
1、有些聚合分析的算法,是很容易就可以并行的,比如说max有些聚合分析的算法,是不好并行的,比如说,count(distinct),并不是说,在每个node上,直接就出一些distinct value,就可以的,因为数据可能会很多es会采取近似聚合的方式,就是采用在每个node上进行近估计的方式,得到最终的结论,cuont(distcint),可能会有5%左右的错误率,近似估计后的结果,不...原创 2019-07-27 23:31:22 · 615 阅读 · 0 评论 -
elastic search中的bucket和metric
概念bucket:按照某个字段进行bucket划分,那个字段的值相同的那些数据,就会被划分到一个bucket中;metric:对一个bucket执行的某种聚合分析的操作,比如说求平均值,求最大值,求最小值对这两个与sql语句进行类比:select count(*) from access_log group by user_idbucket:group by user_id --...原创 2019-07-27 16:39:22 · 524 阅读 · 0 评论 -
elastic search中在index_time时使用n-gram来进行搜索推荐
什么是n-gram?n元预发模型,对某个词按长度n进行分割quick,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 ngram?边界n-gram,切...原创 2019-07-22 22:51:03 · 610 阅读 · 0 评论 -
elastic search中前缀搜索,通配符搜索,正则搜索的使用
PUT my_index{ "mappings": { "my_type": { "properties": { "title": { "type": "keyword" } } } }}GET my_index/my_type/_search{ "query": { "pr...翻译 2019-07-21 23:47:43 · 1105 阅读 · 0 评论 -
elastic search中混合使用match实现召回率和精确率的平衡
召回率:比如你搜索一个java spark,总共有100个doc,能返回多少个doc作为结果,就是召回率,即recall;精准度:比如你搜索一个java spark,能不能尽可能让包含短语 "java spark",或者是java和spark离的很近的doc,排在最前面,即precision;在使用近似匹配的时候,召回率比较低,精准度太高了,比如:match phrase,proxi...翻译 2019-07-21 22:52:11 · 862 阅读 · 0 评论 -
elastic search中的match phase和近似匹配的原理
phrase match:短语匹配,将多个term作为一个短语,一起去搜索,只有包含这个短语的doc才会作为结果返回。 proximity match:近似匹配1、java spark,就靠在一起,中间不能插入任何其他字符,就要搜索出来这种doc,使用短语匹配2、java spark,但是要求,java和spark两个单词靠的越近,doc的分数越高,排名越靠前,使用近似匹配GET /f...原创 2019-07-21 18:21:59 · 1441 阅读 · 0 评论 -
elastic search中的most fields策略以及与best fields策略的区别
best-fields策略,主要是说将某一个field匹配尽可能多的关键词的doc优先返回回来 most-fields策略,主要是说尽可能返回更多field匹配到某个关键词的doc,优先返回回来POST /forum/_mapping/article{ "properties": { "sub_title": { "type": "string...原创 2019-07-21 10:06:24 · 582 阅读 · 0 评论 -
elastic search中best fields策略
需求:搜索title或content中包含java或solution的帖子?进行multi-field多字段搜索GET /forum/article/_search{ "query": { "bool": { "should": [ { "match": { "title": "java solution"...原创 2019-07-20 16:49:05 · 568 阅读 · 0 评论 -
elastic search在多shard场景下reveleance score不准确问题解析
如果一个index有多个shard的话,可能搜索结果会不准确,原因见下图:2、怎么解决该问题?(1)生产环境下,数据量大,数据应该尽可能实现均匀分配数据量很大的话,一般情况下,在概率学的背景下,es都是在多个shard中均匀路由数据的,路由的时候根据_id,负载均衡比如说有10个document,title都包含java,一共有5个shard,那么在概率学的背景下,如果负载均衡的...原创 2019-07-20 16:38:50 · 282 阅读 · 0 评论 -
elastic search中父子关系文档
1、为什么要有父子文档?(1)、nested object的数据建模,是采取类似冗余数据的方式,将多个数据都放在一起,维护成本就比较高;(2)、parent-child数据建模,采取的是类似于关系型数据库的三范式,多个实体都分割开来,每个实体之间都通过一些关联方式,进行了父子关系的关联,各种数据不需要都放在一起,父doc和子doc分别在进行更新的时候,都不会影响对方;为什么父子文档性能...原创 2019-07-29 23:23:14 · 3068 阅读 · 0 评论 -
elastic search中multi-value搜索的实现方式及控制全文搜索的精准度
1、为帖子数据增加标题字段POST /forum/article/_bulk{ "update": { "_id": "1"} }{ "doc" : {"title" : "this is java and elasticsearch blog"} }{ "update": { "_id": "2"} }{ "doc" : {"title" : "this is java blog"...原创 2019-07-20 15:10:43 · 790 阅读 · 0 评论 -
elastic search中filter过滤器内部实现
大致过程:在倒排索引中查找搜索串,获取document list; 为每个在倒排索引中搜索到的结果,构建一个bitset; 遍历每个过滤条件对应的bitset,优先从最稀疏的开始搜索,查找满足所有条件的document; caching bitset,跟踪query; 如果document有新增或修改,那么cached bitset会被自动更新; 以后只要是有相同的filter条件的...原创 2019-07-20 13:09:50 · 1133 阅读 · 0 评论 -
elastic search数据建模-共享锁,排它锁
场景2:已经有线程上了共享锁,然后有其他线程要上排他锁1、概念共享锁:这份数据是共享的,多个线程都可以获取同一个数据的共享锁,然后对这个数据执行读操作,读锁;排他锁:是排他的操作,只能一个线程获取排他锁,然后执行增删改操作,写锁;排它锁和共享锁是互斥的;2、实验场景1:线程在读数据,其他线程也能过来读数据judge-lock-2.groovy: if (ctx._sourc...原创 2019-07-28 17:19:01 · 253 阅读 · 0 评论