摘要:提高性能 短语和邻近度查询比简单的match查询在性能上更昂贵。match查询只是查看词条是否存在于倒排索引(Inverted Index)中,而match_phrase查询则需要计算和比较多个可能重复词条(Multiple possibly repeated)的位置。 在Lucene Nightl
阅读全文
摘要:多值字段(Multivalue Fields) 在多值字段上使用短语匹配会产生古怪的行为: PUT /my_index/groups/1 { "names": [ "John Abraham", "Lincoln Smith"] } 运行一个针对Abraham Lincoln的短语查询: GET /
阅读全文
摘要:本文翻译自Elasticsearch官方指南的Proximity Matching一章。 邻近匹配(Proximity Matching) 使用了TF/IDF的标准全文搜索将文档,或者至少文档中的每个字段,视作"一大袋的单词"(Big bag of Words)。match查询能够告诉我们这个袋子中
阅读全文
摘要:本章翻译自Elasticsearch官方指南的Looking at Time一章。 时间数据处理(Looking at Time) 如果在ES中,搜索是最常见的行为,那么创建日期柱状图(Date Histogram)肯定是第二常见的。为什么要使用日期柱状图呢? 想象在你的数据中有一个时间戳。数据是什
阅读全文
摘要:本章翻译自Elasticsearch官方指南的Controlling Relevance一章。 function_score查询 function_score查询是处理分值计算过程的终极工具。它让你能够对所有匹配了主查询的每份文档调用一个函数来调整甚至是完全替换原来的_score。 实际上,你可以通
阅读全文
摘要:本章翻译自Elasticsearch官方指南的Controlling Relevance一章。 忽略TF/IDF 有时我们不需要TF/IDF。我们想知道的只是一个特定的单词是否出现在了字段中。比如我们正在搜索度假酒店,希望它拥有的卖点越多越好: WiFi 花园(Garden) 泳池(Pool) 而关
阅读全文
摘要:数据建模(Modeling Your Data) ES是一头不同寻常的野兽,尤其是当你来自SQL的世界时。它拥有很多优势:性能,可扩展性,准实时的搜索,以及对大数据的分析能力。并且,它很容易上手!只需要下载就能够开始使用它了。 但是它也不是魔法。为了更好的利用ES,你需要了解它从而让它能够满足你的需
阅读全文
摘要:1. 取得某个索引中某个字段中的所有出现过的值 这种操作类似于使用SQL的SELECT UNIQUE语句。当需要获取某个字段上的所有可用值时,可以使用terms聚合查询完成: 因为目标是得到name字段上的所有出现过的值,因此search_type被设置为了count,这样在返回的响应中不会出现冗长
阅读全文
摘要:本章翻译自Elasticsearch官方指南的Partial Matching一章。 索引期间的优化(Index-time Optimizations) 目前我们讨论的所有方案都是在查询期间的。它们不需要任何特殊的映射或者索引模式(Indexing Patterns);它们只是简单地工作在已经存在于
阅读全文
摘要:本章翻译自Elasticsearch官方指南的Controlling Relevance一章。 控制相关度(Controlling Relevance) 对于仅处理结构化数据(比如日期,数值和字符枚举值)的数据库,它们只需要检查一份文档(在关系数据库中是一行)是否匹配查询即可。 尽管布尔类型的YES
阅读全文
摘要:本章翻译自Elasticsearch官方指南的Controlling Relevance一章。 Lucene中的Practical Scoring Function 对于多词条查询(Multiterm Queries),Lucene使用的是布尔模型(Boolean Model),TF/IDF以及向量
阅读全文
摘要:本章翻译自Elasticsearch官方指南的Controlling Relevance一章。 通过查询结构调整相关度 ES提供的查询DSL是相当灵活的。你可以通过将单独的查询子句在查询层次中上下移动来让它更重要/更不重要。比如,下面的查询: quick OR brown OR red OR fox
阅读全文
摘要:最近因为业务需要监控nginx和apache的日志,所以粗略研究了下ELK。这三个字母分别代表了Elasticsearch, Logstash, Kibana。他们组成了一个基础的日志统计系统,L负责日志信息获取,E负责创建日志缓存,K负责最终的视图呈现。 安装 推荐使用tar包,rpm看似方便,但
阅读全文
摘要:elasticsearch的查询有两部分组成:query and filter。 两者的主要区别在于:filter是不计算相关性的,同时可以cache。因此,filter速度要快于query。 先记录一下es提供的各种query。 以下内容只为当做读书笔记,更多详细细节请参见http://www.e
阅读全文
摘要:今天需要做一些最简单的聚合查询 COUNT(*) SQL $ cat << EOF | ./es_query.py http://127.0.0.1:9200 select count(*) from quote EOF {"count(*)": 20994400} Elasticsearch {
阅读全文
摘要:高层概念(High-Level Concepts) 和查询DSL一样,聚合(Aggregations)也拥有一种可组合(Composable)的语法:独立的功能单元可以被混合在一起来满足你的需求。这意味着需要学习的基本概念虽然不多,但是它们的组合方式是几近无穷的。 为了掌握聚合,你只需要了解两个主要
阅读全文
摘要:Filter DSL term 过滤 term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文本数据类型): { "term": { "age": 26 }} { "term": { "date": "2014-09-01" }} { "term":
阅读全文
摘要:现在让我们来看看前缀匹配能够如何帮助全文搜索。用户已经习惯于在完成输入之前就看到搜索结果了 - 这被称为即时搜索(Instant Search, 或者Search-as-you-type)。这不仅让用户能够在更短的时间内看到搜索结果,也能够引导他们得到真实存在于我们的索引中的结果。 比如,如果用户输
阅读全文
摘要:template的使用 刚开始的时候,每次实验都去改/etc/elasticsearch/elasticsearch.yml配置文件。事实上在template里修改settings更方便而且灵活!当然最主要的,还是调节里面的properties设定,合理的控制store和analyze了。 temp
阅读全文
摘要:本次分享主要包含两个方面的实战经验:索引性能和查询性能。 一. 索引性能(Index Performance) 首先要考虑的是,索引性能是否有必要做优化? 索引速度提高与否?主要是看瓶颈在什么地方,若是 Read DB(产生DOC)的速度比较慢,那瓶颈不在 ElasticSearch 时,优化就没那
阅读全文