今天来聊一个 Elasticsearch 的另一个关键概念--相关性算分.在查询 API 的结果中,我们经常会看到 _score 这个字段,它就是用来表示相关性算分的字段,而相关性就是描述一个文档和查询语句的匹配程度. 打分的本质其实就是排序,Elasticsearch 会把最符合用户需求的文档排在最前面. 在 Elasticsearch 5.0 之前,相关性算分算法采用的是 TF-IDF 算法,而在5.0之后采用的是 BM 25 算法.听到这也许你会比较疑惑,想知道这两个算法到底是怎么样的.别…
Elasticsearch 系列回来了,先给因为这个系列关注我的同学说声抱歉,拖了这么久才回来,这个系列虽然叫「Elasticsearch 从入门到放弃」,但只有三篇就放弃还是有点过分的,所以还是回来继续更新. 之前我们聊过了Elasticsearch 的索引和文档,不太熟悉的话可以先翻阅一下前文.今天再一起聊一下 Elasticsearch 的分词器. 关于分词 如果你是讲 Elasticsearch 作为搜索引擎,那么你应该需要对分词进行了解,Elasticsearch 的分词是将全文本转换…
今天讲讲分区表和分桶表,前面的文章还没看的可以点击链接: hive从入门到放弃(一)--初识hive hive从入门到放弃(二)--DDL数据定义 hive从入门到放弃(三)--DML数据操作 分区 分区可以提高查询效率,实际上 hive 的一个分区就是 HDFS 上的一个目录,目录里放着属于该分区的数据文件. 分区的基本操作 创建分区表 create table partition_table( col1 int, col2 string ) partitioned by (part_col…
在Elasticsearch中,文档(document)是所有可搜索数据的最小单位.它被序列化成JSON存储在Elasticsearch中.每个文档都会有一个唯一ID,这个ID你可以自己指定或者交给Elasticsearch自动生成. 如果延续我们之前不恰当的对比RDMS的话,我认为文档可以类比成关系型数据库中的表. 元数据 前面我们提到,每个文档都有一个唯一ID来标识,获取文档时,"_id"字段记录的就是文档的唯一ID,它是元数据之一.当然,文档还有一些其他的元数据,下面我们来一一介…
前文我们提到,Elasticsearch的数据都存储在索引中,也就是说,索引相当于是MySQL中的数据库.是最基础的概念.今天分享的也是关于索引的一些常用的操作. 创建索引 curl -X PUT "localhost:9200/jackey?pretty" ES创建索引使用PUT请求即可,上面是最简单的新建一个索引的方法,除此之外,你还可以指定: Settings Mappings aliases 索引名称有以下限制: 必须是小写 不能包含:\,/,*, ?, ", <…
在前文中我们曾经聊过搜索文档的方法,Elasticsearch 一般适用于读多写少的场景,因此我们需要更多的关注读操作. Elasticsearch 提供的 Search API 可以分为 URI Search 和 Request Body Search 两大类.从名称上可以直观的看出,URI Search 是使用URI的参数传递参数给 Elasticsearch,Request Body Search 则是将参数放到 Body 中进行传递,下面我们具体来看一下. URI Search 首先我们…
前面我们聊了 Elasticsearch 的索引.搜索和分词器,今天再来聊另一个基础内容-- Mapping. Mapping 在 Elasticsearch 中的地位相当于关系型数据库中的 schema,它可以用来定义索引中字段的名字.定义字段的数据类型,还可以用来做一些字段的配置.从 Elasticsearch 7.0开始,Mapping 中不在乎需要定义 type 信息了,具体原因可以看官方的解释. 字段的数据类型 我们刚刚提到 Mapping 中可以定义字段的数据类型,这可能是 Mapp…
SpringCloud: 参考官网:https://projects.spring.io/spring-cloud/            中文版         https://springcloud.cc/ 官网界面如下:(中文官网就不粘出来了,感兴趣的自己看) 定义:spring Cloud 给开发者提供一套按照一定套路快速开发 分布式系统 的工具. 以Spring boot实现的微服务架构开发工具为基础.它为微服务架构中涉及的配置管理.服务治理.断路器.智能路由.微代理.控制总线.全局锁…
关于分表:顾名思义就是一张数据量很大的表拆分成几个表分别进行存储. 我们先来大概了解以下一个数据库执行SQL的过程: 接收到SQL --> 放入SQL执行队列 --> 使用分析器分解SQL --> 按照分析结果进行数据的提取或者修改 --> 返回处理结果.在这个过程中一般比较花时间的是在队列里的等待时间和执行时间.归根到底就是执行时间,执行时间减少了等待时间自然就变短了. 为了保证数据的完整性,数据库有锁定机制.MySQL中有表锁定和行锁定,MySQL中myisam存储引擎是表锁定…
因为基础算法快学完了,图论又太难(我太蒻了),想慢慢学. 所以暂时不写关于算法的博客了,但又因为更新博客的需要,会多写写关于STL的博客. (毕竟STL函数库还是很香的(手动滑稽)) 请出今天主角:STL全排列函数prev_permutation()和next_permutation() Part 1:引入和导语 首先,我们需要知道,algorithm库里有一些奇怪的函数. 我们在做题的时候,经常会遇到一些全排列的问题(bushi 这时我们通常要用递归搜索解决问题,但是那样会很麻烦,代码也会又臭…