
ElasticSearch
文章平均质量分 86
闲敲代码、落灯花
坚持写博客,一直在努力中
专注后端开发,喜欢Go和Python的PHP程序员,作为一个前端爱好者,对服务器运维比较有经验
同时也是一个个人站长:在网站:逐步前行STEP[https://www.hezehua.net] 记录我的工作与生活
展开
-
Elasticsearch实战:给博客打造全文检索
学习和使用Elasticsearch有一段时间了,项目中大量使用到了es,但对于我来说都是部分或者局部地去使用,所以得找个时间好好整理并且再完整时实践一下es,于是就有了这篇文章,本文将先简单介绍一下使用到的相关技术,然后再整体讲解实战内容。首先系统架构是LNMP,很简单的个人博客网站(逐步前行STEP),使用laravel框架,实现全文检索的引擎是elasticsearch,使用的分词工...原创 2020-07-07 22:39:36 · 1439 阅读 · 0 评论 -
Elasticsearch 定制评分(自定义评分)
Elasticsearch 的相似度算法被定义为检索词频率/反向文档频率, TF/IDF 。一. 相关概念:检索词频率:tf词 t 在文档 d 的词频( tf )是该词在文档中出现次数的平方根。tf(t in d) = √frequency检索词在该字段出现的频率?出现频率越高,相关性也越高。 字段中出现过 5 次要比只出现过 1 次的相关性高。反向文档频率:idf词 t 的逆向文档频率( idf )是:索引中文档数量除以所有包含该词的文档数,然后求其对数。idf(t) = 1 +原创 2020-07-06 23:02:35 · 2623 阅读 · 0 评论 -
Elasticsearch 数据写入原理
1、elasticsearch 如何使文档可以被搜索为了支持全文检索而采用倒排索引,倒排索引包含一个有序列表,列表包含所有文档出现过的词项 ,对于每一个词项,包含了它所有曾出现过文档的列表。早期的倒排索引,会在文档变化时,重建新的索引,直到完成后替换掉旧的索引,这样新的变化就可以被搜索到。倒排索引具有不变性,这使得索引一旦被读入文件系统缓存,便会留在那里,只要有足够的空间,就可以使大部分请求直接命中缓存,很大地提升了性能,缺点是,如果有新的文档需要被搜索,只能重建整个索引。2、如何使用更好的方式实现原创 2020-05-14 02:07:25 · 830 阅读 · 0 评论 -
elasticsearch查询文档数量
查询文档数量时很常见的操作,一般可以直接使用count获取文档数,但是获取到数量信息,在【分页】应用中,意味着需要查询分页然后再查询总数。有另一种方法,可以让我们在一次查询中获取分页数据并得到总量。在搜索时,结果中的 hits.total 信息中会包含一个整数值表示文档数,当实际文档数小于10000时显示具体数量,当大于10000时,只显示10000并且包含另一个字段relation来表示是否...原创 2020-04-18 01:40:39 · 11284 阅读 · 0 评论 -
elasticsearch 去重计数
去重计数不是精确计数,数据量大的情况下会有误差,官方文档说的是,默认的情况下百万级数据会有5%的误差,实测如下:实际文档数:1924920去重计数:1912715误差率:(1924920 - 1912715)/ 1924920 = 0.006%0.6的误差率还能接受,如果需要更高的准确度的话,需要调整precision_threshold的值,默认值是100,可选值在0~40000,值...原创 2020-04-16 01:28:48 · 1478 阅读 · 0 评论 -
filebeat 解析日志 并发送到Elasticsearch
起先,是出于了解我的网站的访问情况而做一个Nginx日志统计分析的功能,首选的就是ELK,但是,由于Logstash占用内存和CPU占有率都不是我的小服务器能承受的,转而将logstash换成filebeat,因为filebeat足够轻量级,我所需要的功能却都能满足:收集日志发送到ES按指定格式解析日志第1点是filebeat基本的功能,只要正确安装配置就能生效,在我的实践中,我不想要所...原创 2020-02-05 17:28:49 · 5603 阅读 · 0 评论 -
Elasticsearch 模糊搜索
Es 实现类似于mysql的模糊搜索:比如:对字段 keywords 进行 模糊搜索 带“愉”字的文档:{ "query": { "bool": { "filter": [ { "wildcard": { "keywords": "*愉*" } } ] }...原创 2019-11-01 20:14:55 · 8407 阅读 · 0 评论 -
Elasticsearch 搜索数组字段
1、搜索 数组字段 tags 中同时存在元素 str_a、str_b{ "query": { "bool": { "filter": [ { "term": { "tags": "str_a" } }, { "term": { ...原创 2019-11-05 10:31:45 · 22007 阅读 · 5 评论 -
记一次ElasticSearch 更改 mapping 字段类型的过程
首先,es不支持直接跟那个该mappinng,所以,更改 mapping 实质上是重建索引。操作步骤如下:1、为当前这个索引old_index设置一个别名my_index:curl -XPOST localhost:9200/_aliases -d ' { "actions": [ { "add": { "alias": "my...原创 2019-09-09 13:28:06 · 3148 阅读 · 0 评论