项目集·Java-ElasticSearch大众点评

一、ElasticSearch大众点评

0、ElasticSearch核心概念

字段类比
Index数据库
Type数据库表
Document表数据
Mapping索引映射
Shard横向扩容、分库分表

0.1 相关性

  • TF/IDF(词频-逆文档频率):TF * IDF。主要思想是:如果某个词或短语在一篇文章中出现的频率高(即TF高),并且在其他文章中很少出现(即IDF高),则认为此词或者短语具有很好的类别区分能力,适合用来分类。

1、建模

1.1 索引结构

在这里插入图片描述

1.2 数据类型

一级分类二级分类具体类型
核心类型字符串类型string,text,keyword
整数类型integer,long,short,byte
浮点类型double,float,half_float,scaled_float
逻辑、日期、范围、二进制类型boolean,date,range,binary
复合类型数组类型array
对象类型object
嵌套类型nested
地理类型地理坐标类型geo_point
地理地图geo_shape
特殊类型IP、范围、令牌计数、附件、抽取类型ip、completion、token_count、attachment、percolator

2、结构化搜索

在这里插入图片描述

2.1 全文检索(Query)& 精确匹配(Filter)

  • Query会计算文档之间的相关度,并按照相关度进行排序,没有缓存
  • Filter的话,不计算相关度、有cashing bitset的机制,如果以后有相同过滤条件的Filter时,会直接使用cashed bitset
  • bitset:就是二进制set,会记录filter的word在哪些文档中存在的集合,有的标1,没有的标0
  • 全文检索(Query)
    在这里插入图片描述
  • 精确匹配(Filter)
    在这里插入图片描述

2.2 Filter(精确匹配)

方法类比
term filterSQL中的单个where
bool(多条件组合查询)SQL中的where and
must必须匹配
should匹配任意一个 SQL中的or
must_not必须不匹配 SQL中的不等于
boost权重
best fields(dis_max)一个field匹配到尽可能多的关键词,某一query的最大值
tie_breaker优化dis_max,考虑其他query
terms filter(多值查询)SQL中的 in
range filter(范围查询)gt(大于)、lt(小于) SQL中的between
prefix filter(前缀查询)性能开销很大,一般不单独使用

https://blog.csdn.net/weixin_40341116/article/details/81842989(n-gram:高效match_phrase_prefix query)

2.3 Query(相关性分析)

方法描述
match query看检索的字段分不分词:不分词 = term filter,分词就是文档里有就按相关度排名返回文档,分词 = bool
match query + operatorand 两个词都有才返回 = term + should
match query + minmax_should_match(调精确度,去长尾)minmax_should_match 按命中百分比返回,75%,就是检索四个词,返回包含三个词以上的文档;50%就是返回包含两个词以上的
multi_match query + most fields等于best fields + tie_breaker
match_phrase(短语查询)紧挨着
slop(近似查询)两个词之间隔slop个距离
wildcard(通配符匹配)?代表任意字符; *代表0或多个字符
match_phrase_prefix query(类似短语查询,但最后一个词是前缀查询)max_expansions最多匹配多少个term,限制性能
fuzzy query(模糊查询)fuzziness 最多可以纠正几个字母

https://blog.csdn.net/weixin_40341116/article/details/80913045(自定义评分函数)

3、聚合分析

3.1 案例1 家电卖场销量统计

字段类型
售价long
颜色keyword
品牌keyword
售出日期date
3.1.1 度量聚合
方法描述
aggs分组聚合 = group by
aggs多层下钻 = group by a,b
hitograminterval 数值型
date hitograminterval “month”

https://blog.csdn.net/qq_27384769/article/details/79736632(41_ElasticSearch global bucket:单个品牌与所有品牌销量对比)

3.1.2 近似聚合
  • 使用场景:count(distinct) -> 不易并行 -> 不要求特别精准、近似聚合
方法描述
cardinalitycount(distinct)
percentiles(百分比算法)访问请求时长

4、 案例1 大众点评

4.1 建模

字段类型
shop_idinteger
shop_nametext
shop_tagstext
shop_locationgeo_point
remark_scoredouble
price_per_maninteger
category_idinteger
category_namekeyword

4.2 插入

4.3 搜索

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值