搜索/elasticsearch
莫言静好、
这个作者很懒,什么都没留下…
展开
-
ElasticSearch核心基础之入门篇
一 什么是全文检索指的是计算机搜索程序扫面整篇文档,对每一个单词建立索引,并记录该词出现的位置次数。这样当用户查询的时候,搜索程序就根据事先监理的索引进行查找,并将查找结果返回用户。 正排索引和倒排索引我们知道,搜索程序可以扫描文档,对每一个单词进行 索引,这样被拆分的单词就是关键词,所以就会形成一个关键词的集合,每一个关键词都会记录它在文档中出现的位置和次数。正排索引:原创 2017-11-14 11:32:27 · 3553 阅读 · 0 评论 -
ElasticSearch的搜索推荐(typeahead)
搜索推荐,即typeahead,也就是我们在搜索的时候,比如输入lucene el,这时候会给我一些提示:lucene elasticsearchlucene elasticsearch 区别lucene elasticsearch solr 一 短语前缀匹配(phrase prefix matching)即我通过使用短语前缀匹配,既可以查询所有lucene el开始的短语原创 2017-11-15 09:28:10 · 894 阅读 · 0 评论 -
ElasticSearch的中文分词
一ElasticSearch安装中文分词器1.1 gitclone https://github.com/medcl/elasticsearch-analysis-ik1.2 gitcheckout tags/v5.2.01.3 mvnpackage1.4将target/releases/elasticsearch-analysis-ik-5.2.0.zip拷贝到ES/plug原创 2017-11-15 09:27:52 · 1428 阅读 · 0 评论 -
ElasticSearch多字段查询best_fields&most_fields
一 理解bool 和dis_max查询1.1 bool查询# 返回的文档必须满足must子句,并且参与计算分值# 返回的文档必须满足filter子句,不计算分值# 返回的文档可能满足should子句的条件。如果一个没有must和filter的有一个或者多个should子句,那么只要按满足一个就可以返回,minimum_should_match表示至少满足几个子句# 返回的文档必原创 2017-11-15 09:27:18 · 2669 阅读 · 0 评论 -
ElasticSearch多shard场景相关度打分不准确问题
如果一个Index有多个shard的话,那么搜索的结果可能不太准确。比如我们在某一个shard中,有很多个document,假设有20个文档的record.desc中包含Premium,当搜索Premium的请求到达这个shard的时候,会利用TF/IDF计算相关度算法:TF: Term Frequency的缩写,表示该term在当前document出现的频率IDF: Inverse原创 2017-11-15 09:26:52 · 1293 阅读 · 0 评论 -
ElasticSearch之向量空间模型算法
一 检索模型1.1 bool模式bool模式下,是最简单的检索模式,依据操作符AND 或者 OR 过滤document,结果只是包含指定的term的文档。他不会对document打分,只是为了减少后续要计算的document的数量,提升性能 1.2 TF/IDFTF 是 term frequency的缩写,表示这个词条term在该文档出现的频率,往往能够表现文档的主体信息,即T原创 2017-11-15 09:12:48 · 4390 阅读 · 0 评论 -
ElasticSearch之高亮显示
一 什么是highlightHighlight就是我们所谓的高亮,即允许对一个或者对个字段在搜索结果中高亮显示。比如字体加粗或者字体呈现和其他文本普通颜色等。为了执行高亮显示,该字段必须有实际的内容,并且这个字段必须存储,即在mapping中store设为true,不能只存在于内存中,否则系统会自动加载_source字段并匹配相关的列。 二 三种高亮类型ES提供了三种高亮类型,原创 2017-11-15 09:12:33 · 24335 阅读 · 0 评论 -
ElasticSearch中doc values和fielddata
一 为什么聚合排序不适合使用倒排序索引假设现在有以下的一个搜索:POST /ecommerce/music/_search{ "size":0, "query":{ "match":{ "desc":"吉他" } }, "aggs":{ "brands":{原创 2017-11-15 09:12:11 · 10085 阅读 · 0 评论 -
ElasticSearch之基于地理位置的搜索
我们有时候,希望可以根据当前所在的位置,找到自己身边的符合条件的一些商店,酒店之类的。它主要支持两种类型的地理查询:一种是地理点(geo_point),即经纬度查询,另一种是地理形状查询(geo_shape),即支持点、线、圈、多边形查询等。 一 地理形状我们在计算机屏幕上看到的圆形并不是由完美的连续的线组成的。而是用一个个连续的着色像素点画出的一个近似圆。地理形状的工作方式就与此相似原创 2017-11-15 09:11:45 · 13074 阅读 · 0 评论 -
ElasticSearch之term vector
termvector会获取document中的某个field内的各个term的统计信息。一 term的基本信息# term_freq:在在该字段中的频率# position:词在该字段中的位置# start_offset:从什么偏移量开始的# end_offset: 到什么偏移量结束二 term的统计信息如果启用了term的统计信息,即term_statistic原创 2017-11-15 09:11:23 · 1445 阅读 · 0 评论 -
ElasticSearch suggester
Suggesters就是一款基于用于提供的文本给出一些相似性的东西,即在用户输入搜索的过程中,进行自动补全或者纠错。 通过协助用户输入更精准的关键词,提高后续全文搜索阶段文档匹配的程度POST twitter/_search{ "query" : { "match": { "message": "tring out Elasticsearch" }原创 2017-11-15 09:11:04 · 2866 阅读 · 0 评论 -
ElasticSearch核心基础之聚合
一 聚合的分类1.1 分组聚合(bucket)分组聚合,就是指依据哪一个字段进行分组,然后该字段相同的值的文档都在一个bucket中GET /索引/类型/_search{ "size" : 0, "aggs" : { "bucket聚合名称" : { "terms" : { "field原创 2017-11-14 12:37:26 · 1604 阅读 · 0 评论 -
ElasticSearch核心基础之索引管理
一 索引管理1.1 创建索引# 建立索引的时候,我们可以设置主分片和备份分片的数量通过setting字段number_of_shards和number_of_replicas字段设置# 对于ES的文档而言,一个文档会包含一个或者多个字段,任何字段都要有自己的数据类型,例如string、integer、date等。ElasticSearch中是通过映射来进行字段和数据类型对应的。在默认的原创 2017-11-14 12:35:02 · 1952 阅读 · 0 评论 -
ElasticSearch核心基础之映射
一 mapping相关的概念1.1 映射类型映射类型也就是我们所谓的type,一个索引可以一个或者多个类型。每一个映射类型包括:# 元数据字段:用来定义如何处理文档的元数据。元数据字段包括文档的_index字段、_type、_id、_source字段等# 字段或者属性,每一个类型都包括一些字段注意:相同索引,但是类型不同,而名字相同的字段的数据类型必须一致,即拥有相同的映射原创 2017-11-14 12:28:20 · 7548 阅读 · 0 评论 -
ElasticSearch核心基础之搜索
一 搜索方式我们知道搜索有2种方式:一种是通过URL参数搜索,另一种是通过POST请求参数进行搜索1.1 通过URL参数搜索比如GET http://hadoop-all-01:9200/ecommerce/_search?参数列表1.2 通过POST请求参数进行搜索即DSL查询:GET http://hadoop-all-01:9200/ecommer原创 2017-11-14 11:38:38 · 2237 阅读 · 0 评论 -
ElasticSearch的filter原理深度剖析
# 首先在倒排列表中匹配字符串,返回文档列表# 然后为每一个匹配到的文档列表构建一个bitset。[0,1,0,0,1]等用来标志一个文档是否对一个filter条件匹配,如果匹配就是1,否则就是0# 接着遍历每一个过滤条件对应的bitset,优先从最稀疏的索引开始搜索,查找满足所有条件的document所谓稀疏索引:就是0比较多1比较少的情况的索引。一次性其原创 2017-11-17 09:05:59 · 2884 阅读 · 0 评论