自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不忘初心,好好沉淀

后端工程师,前端技术爱好者

  • 博客(203)
  • 收藏
  • 关注

翻译 [Elasticsearch] 聚合的测试数据

本章翻译自Elasticsearch官方指南的Aggregation Test-Drive一章。聚合的测试数据(Aggregation Test-Drive)我们将学习各种聚合以及它们的语法,但是最好的学习方法还是通过例子。一旦你了解了如何思考聚合以及如何对它们进行合适的嵌套,那么语法本身是不难的。让我们从一个例子开始。我们会建立一个也许对汽车交易商有所用处

2015-01-05 00:02:50 40824 4

翻译 [Elasticsearch] 聚合中的重要概念 - Buckets(桶)及Metrics(指标)

本章翻译自Elasticsearch官方指南的Aggregations-High-level Concepts一章。高层概念(High-Level Concepts)和查询DSL一样,聚合(Aggregations)也拥有一种可组合(Composable)的语法:独立的功能单元可以被混合在一起来满足你的需求。这意味着需要学习的基本概念虽然不多,但是它们的组合方式是几

2015-01-04 10:03:00 32473 4

翻译 [Elasticsearch] 控制相关度 (六) - function_score查询中的filter,functions及random_score参数

本章翻译自Elasticsearch官方指南的Controlling Relevance一章。根据过滤子集来提升(Boosting Filtered Subsets)回到在忽略TF/IDF(Ignoring TF/IDF)中处理的那个问题,我们需要根据每个度假酒店拥有的卖点数量来对它们的相关度分值进行计算。我们希望利用缓存的过滤器来影响分值,而function_

2014-12-27 23:26:24 27172

翻译 [Elasticsearch] 控制相关度 (五) - function_score查询及field_value_factor,boost_mode,max_mode参数

本章翻译自Elasticsearch官方指南的Controlling Relevance一章。function_score查询function_score查询是处理分值计算过程的终极工具。它让你能够对所有匹配了主查询的每份文档调用一个函数来调整甚至是完全替换原来的_score。实际上,你可以通过设置过滤器来将查询得到的结果分成若干个子集,然后对每个子集使

2014-12-27 23:20:12 38054 8

翻译 [Elasticsearch] 控制相关度 (四) - 忽略TF/IDF

本章翻译自Elasticsearch官方指南的Controlling Relevance一章。忽略TF/IDF有时我们不需要TF/IDF。我们想知道的只是一个特定的单词是否出现在了字段中。比如我们正在搜索度假酒店,希望它拥有的卖点越多越好:WiFi花园(Garden)泳池(Pool)而关于度假酒店的文档类似下面这样:{ "descript

2014-12-26 00:07:38 17745

翻译 [Elasticsearch] 控制相关度 (三) - 通过查询结构调整相关度以及boosting查询

本章翻译自Elasticsearch官方指南的Controlling Relevance一章。通过查询结构调整相关度ES提供的查询DSL是相当灵活的。你可以通过将单独的查询子句在查询层次中上下移动来让它更重要/更不重要。比如,下面的查询:quick OR brown OR red OR fox我们可以使用一个bool查询,对所有词条一视同仁:

2014-12-25 01:10:05 13298 2

翻译 [Elasticsearch] 控制相关度 (二) - Lucene中的PSF(Practical Scoring Function)与查询期间提升

本章翻译自Elasticsearch官方指南的Controlling Relevance一章。Lucene中的Practical Scoring Function对于多词条查询(Multiterm Queries),Lucene使用的是布尔模型(Boolean Model),TF/IDF以及向量空间模型(Vector Space Model)来将它们结合

2014-12-24 10:12:20 10245

翻译 [Elasticsearch] 控制相关度 (一) - 相关度分值计算背后的理论

本章翻译自Elasticsearch官方指南的Controlling Relevance一章。控制相关度(Controlling Relevance)对于仅处理结构化数据(比如日期,数值和字符枚举值)的数据库,它们只需要检查一份文档(在关系数据库中是一行)是否匹配查询即可。尽管布尔类型的YES|NO匹配也是全文搜索的一个必要组成,它们本身是不够的。我们还需要

2014-12-23 10:02:40 23775 1

翻译 [Elasticsearch] 部分匹配 (四) - 索引期间优化ngrams及索引期间的即时搜索

本章翻译自Elasticsearch官方指南的Partial Matching一章。索引期间的优化(Index-time Optimizations)目前我们讨论的所有方案都是在查询期间的。它们不需要任何特殊的映射或者索引模式(Indexing Patterns);它们只是简单地工作在已经存在于索引中的数据之上。查询期间的灵活性是有代价的:搜索性能。有时

2014-12-22 09:25:40 17419 2

翻译 [Elasticsearch] 部分匹配 (三) - 查询期间的即时搜索

本章翻译自Elasticsearch官方指南的Partial Matching一章。查询期间的即时搜索(Query-time Search-as-you-type)现在让我们来看看前缀匹配能够如何帮助全文搜索。用户已经习惯于在完成输入之前就看到搜索结果了 - 这被称为即时搜索(Instant Search, 或者Search-as-you-type)。这不仅让用户能

2014-12-21 11:53:30 17606 3

翻译 [Elasticsearch] 部分匹配 (二) - 通配符及正则表达式查询

通配符和正则表达式查询wildcard查询和prefix查询类似,也是一个基于词条的低级别查询。但是它能够让你指定一个模式(Pattern),而不是一个前缀(Prefix)。它使用标准的shell通配符:?用来匹配任意字符,*用来匹配零个或者多个字符。以下查询能够匹配包含W1F 7HW和W2F 8HW的文档:GET /my_index/address/_search{

2014-12-19 10:27:42 52607 2

翻译 [Elasticsearch] 部分匹配 (一) - 前缀查询

部分匹配(Partial Matching)敏锐的读者可能已经发现到目前为止,介绍的查询都是在整个词条层面进行操作的。匹配的最小单元必须是一个词条。你只能找到存在于倒排索引(Inverted Index)中的词条。但是如果你想匹配词条的一部分,而不是整个词条呢?部分匹配(Partial Matching)允许用户指定词条的一部分然后找到含有该部分的任何单词。匹配词条一部分这

2014-12-18 10:04:56 55755

翻译 [Elasticsearch] 邻近匹配 (三) - 性能,关联单词查询以及Shingles

提高性能短语和邻近度查询比简单的match查询在性能上更昂贵。match查询只是查看词条是否存在于倒排索引(Inverted Index)中,而match_phrase查询则需要计算和比较多个可能重复词条(Multiple possibly repeated)的位置。在Lucene Nightly Benchmarks中,显示了一个简单的term查询比一个短语查询快大概10倍,比一

2014-12-17 10:15:54 14708 2

翻译 [Elasticsearch] 邻近匹配 (二) - 多值字段,邻近程度与相关度

多值字段(Multivalue Fields)在多值字段上使用短语匹配会产生古怪的行为:PUT /my_index/groups/1{ "names": [ "John Abraham", "Lincoln Smith"]}运行一个针对Abraham Lincoln的短语查询:GET /my_index/groups/_search{ "q

2014-12-16 09:30:33 12528 2

翻译 [Elasticsearch] 邻近匹配 (一) - 短语匹配以及slop参数

本文翻译自Elasticsearch官方指南的Proximity Matching一章。邻近匹配(Proximity Matching)使用了TF/IDF的标准全文搜索将文档,或者至少文档中的每个字段,视作"一大袋的单词"(Big bag of Words)。match查询能够告诉我们这个袋子中是否包含了我们的搜索词条,但是这只是一个方面。它不能告诉我们关于单词间关

2014-12-15 11:31:14 37633 1

翻译 [Elasticsearch] 多字段搜索 (六) - 自定义_all字段,跨域查询及精确值字段

自定义_all字段在元数据:_all字段中,我们解释了特殊的_all字段会将其它所有字段中的值作为一个大字符串进行索引。尽管将所有字段的值作为一个字段进行索引并不是非常灵活。如果有一个自定义的_all字段用来索引人名,另外一个自定义的_all字段用来索引地址就更好了。ES通过字段映射中的copy_to参数向我们提供了这一功能:PUT /my_index{ "m

2014-12-12 10:00:57 19266 1

翻译 [Elasticsearch] 多字段搜索 (五) - 以字段为中心的查询

以字段为中心的查询(Field-centric Queries)上述提到的三个问题都来源于most_fields是以字段为中心(Field-centric),而不是以词条为中心(Term-centric):它会查询最多匹配的字段(Most matching fields),而我们真正感兴趣的最匹配的词条(Most matching terms)。NOTEbest_fields同

2014-12-11 10:11:08 13152

翻译 [Elasticsearch] 多字段搜索 (四) - 跨字段实体搜索

跨字段实体搜索(Cross-fields Entity Search)现在让我们看看一个常见的模式:跨字段实体搜索。类似person,product或者address这样的实体,它们的信息会分散到多个字段中。我们或许有一个person实体被索引如下:{ "firstname": "Peter", "lastname": "Smith"}而addr

2014-12-11 10:09:23 10574 1

翻译 [Elasticsearch] 多字段搜索 (三) - multi_match查询和多数字段

multi_match查询multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询。NOTE存在几种类型的multi_match查询,其中的3种正好和在"了解你的数据"一节中提到的几种类型相同:best_fields,most_fields以及cross_fields。默认情况下,该查询以best_fields类型执行,它会为每个字段生成一

2014-12-10 09:59:09 91851 3

翻译 [Elasticsearch] 多字段搜索 (二) - 最佳字段查询及其调优

最佳字段(Best Fields)假设我们有一个让用户搜索博客文章的网站,就像这两份文档一样:PUT /my_index/my_type/1{ "title": "Quick brown rabbits", "body": "Brown rabbits are commonly seen."}PUT /my_index/my_type/2{

2014-12-09 10:23:13 40025 4

翻译 [Elasticsearch] 多字段搜索 (一) - 多个及单个查询字符串

多字段搜索(Multifield Search)本文翻译自官方指南的Multifield Search一章。查询很少是只拥有一个match查询子句的查询。我们经常需要对一个或者多个字段使用相同或者不同的查询字符串进行搜索,这意味着我们需要将多个查询子句和它们得到的相关度分值以一种有意义的方式进行合并。也许我们正在寻找一本名为战争与和平的书,它的作者是Leo Tolstoy。

2014-12-08 10:19:44 72552 1

翻译 [Elasticsearch] 全文搜索 (四) - 控制分析及相关度

控制分析(Controlling Analysis)查询只能摘到真实存在于倒排索引(Inverted Index)中的词条(Term),因此确保相同的分析过程会被适用于文档的索引阶段和搜索阶段的查询字符串是很重要的,这样才能够让查询中的词条能够和倒排索引中的词条匹配。尽管我们说的是文档(Document),解析器(Analyzer)是因字段而异的(Determined per Fi

2014-12-06 10:38:56 19523 2

翻译 [Elasticsearch] 全文搜索 (三) - match查询和bool查询的关系,提升查询子句

match查询是如何使用bool查询的现在,你也许意识到了使用了match查询的多词查询只是简单地将生成的term查询包含在了一个bool查询中。通过默认的or操作符,每个term查询都以一个k语句被添加,所以至少一个should语句需要被匹配。以下两个查询是等价的:{ "match": { "title": "brown fox"}}{ "bool": {

2014-12-05 10:08:50 48649 2

翻译 [Elasticsearch] 全文搜索 (二) - 多词查询及查询的合并

多词查询(Multi-word Queries)如果我们一次只能搜索一个词,那么全文搜索就会显得相当不灵活。幸运的是,通过match查询来实现多词查询也同样简单:GET /my_index/my_type/_search{ "query": { "match": { "title": "BROWN DOG!" }

2014-12-04 10:08:55 83793 9

翻译 [Elasticsearch] 全文搜索 (一) - 基础概念和match查询

翻译自官方指南的全文搜索一章。全文搜索(Full Text Search)现在我们已经讨论了搜索结构化数据的一些简单用例,是时候开始探索全文搜索了 - 如何在全文字段中搜索来找到最相关的文档。对于全文搜索而言,最重要的两个方面是:相关度(Relevance)查询的结果按照它们对查询本身的相关度进行排序的能力,相关度可以通过TF/IDF,参见什么是相关

2014-12-03 10:04:05 69371 1

原创 [AngularJS/Elasticsearch] 使用AngularJS为基于Elasticsearch的应用创建前端

使用AngularJS为Elasticsearch创建一个前端如果使用Elasticsearch使用应用的数据源,我们可以很方便的使用AngularJS结合Elasticsearch提供的相关模块为它创建一个前端。以创建一个简单的员工信息花名册为例。准备工作准备工作分为以下两个方面:添加前端依赖安装Bower在bower.json中添加对于Angul

2014-12-02 10:10:01 10020

翻译 [Elasticsearch] 索引管理 (五) - 默认映射,重索引,索引别名

默认映射(Default Mapping)一般情况下,索引中的所有类型都会有相似的字段和设置。因此将这些常用设置在_default映射中指定会更加方便,这样就不需要在每次创建新类型的时候都重复设置。_default映射的角色是新类型的模板。所有在_default映射之后创建的类型都会包含所有的默认设置,除非显式地在类型映射中进行覆盖。比如,我们使用_default映射对所有类型禁用

2014-12-01 10:13:22 28283 1

翻译 [Elasticsearch] 索引管理 (四) - 动态映射

动态映射(Dynamic Mapping)当ES在文档中碰到一个以前没见过的字段时,它会利用动态映射来决定该字段的类型,并自动地对该字段添加映射。有时这正是需要的行为,但有时不是。你或许不知道在以后你的文档中会添加哪些字段,但是你想要它们能够被自动地索引。或许你只是想要忽略它们。或者 - 尤其当你将ES当做主要的数据存储使用时 - 大概你会希望这些未知的字段会抛出异常来提醒你注

2014-11-29 11:11:53 21792

原创 [Java 并发] Java并发编程实践 思维导图 - 第六章 任务执行

根据《Java并发编程实践》一书整理的思维导图。希望能够有所帮助。第一部分:第二部分:第三部分:

2014-11-28 09:08:29 5231

翻译 [Elasticsearch] 索引管理 (三) - 根对象(Root Object)

根对象(Root Object)映射的最顶层被称为根对象。它包含了:属性区域(Properties Section),列举了文档中包含的每个字段的映射信息。各种元数据(Metadata)字段,它们都以_开头,比如_type,_id,_source。控制用于新字段的动态探测(Dynamic Detection)的设置,如analyzer,dynamic_date_formats和dy

2014-11-26 10:06:08 9628

翻译 [Elasticsearch] 索引管理 (二)

自定义解析器(Custom Analyzers)虽然ES本身已经提供了一些解析器,但是通过组合字符过滤器(Character Filter),分词器(Tokenizer)以及词条过滤器(Token Filter)来创建你自己的解析器才会显示出其威力。在解析和解析器中,我们提到过解析器(Analyzer)就是将3种功能打包得到的,它会按照下面的顺序执行:字符过滤器(Cha

2014-11-25 10:52:18 11306

翻译 [Elasticsearch] 索引管理 (一)

索引管理本文翻译自Elasticsearch官方指南的索引管理(Index Management)一章我们已经了解了ES是如何在不需要任何复杂的计划和安装就能让我们很容易地开始开发一个新的应用的。但是,用不了多久你就会想要仔细调整索引和搜索过程来更好的适配你的用例。几乎所有的定制都和索引(Index)以及其中的类型(Type)相关。本章我们就来讨论用于管理索引和类型映射的A

2014-11-24 10:04:05 36378

原创 [Java 并发] Java并发编程实践 思维导图 - 第五章 基础构建模块

根据《Java并发编程实践》一书整理的思维导图。希望能够有所帮助。

2014-11-23 10:01:20 4976

原创 Effective JavaScript Item 55 接受配置对象作为函数参数

接受配置对象作为函数参数虽然保持函数接受的参数的顺序很重要,但是当函数能够接受的参数达到一定数量时,也会让用户很头疼:var alert = new Alert(100, 75, 300, 200, "Error", message, "blue", "white", "black", "error", true);随着函数的不断重构和进化,它能

2014-11-21 10:05:06 3839

原创 Effective JavaScript Item 54 将undefined视为"没有值"

将undefined视为"没有值"JavaScript中的undefined是一个特殊的值:当JavaScript没有提供具体的值时,它就会产生undefined。比如:未被赋值的变量的初始值就是undefined访问对象中不存在的属性会得到undefined没有返回值的函数,undefined会作为其返回值函数的参数没有提供时,它的值就是undefined// 情

2014-11-20 10:24:13 3891

翻译 [Elasticsearch] 分布式搜索

分布式搜索本文翻译自Elasticsearch官方指南的Distributed Search Execution一章。在继续之前,我们将绕一段路来谈谈在分布式环境中,搜索是如何执行的。和在分布式文档存储(Distributed Document Store)中讨论的基本CRUD操作相比,这个过程会更加复杂一些。一个CRUD操作会处理一个文档,该文档有唯一的_index,_t

2014-11-19 10:10:37 11235 2

翻译 [Elasticsearch] 分布式文档存储

本文翻译自Elasticsearch官方指南的distributed document store一章。分布式文档存储在上一章中,我们一直在介绍索引数据和获取数据的方法。但是我们省略了很多关于数据是如何在集群中被分布(Distributed)和获取(Fetched)的技术细节。这实际上是有意为之 - 你真的不需要了解数据在ES中是如何被分布的。它能工作就足够了。在本章中,我

2014-11-18 09:53:54 23220 3

翻译 [Elasticsearch] 集群的工作原理 - 第一部分

本文翻译自Elasticsearch官方指南的life inside a cluster一章。ES就是为高可用和可扩展而生的。扩展可以通过购置性能更强的服务器(垂直扩展或者向上扩展,Vertical Scale/Scaling Up),亦或是通过购置更多的服务器(水平扩展或者向外扩展,Horizontal Scale/Scaling Out)来完成。尽管ES能够利用更强劲的

2014-11-17 10:25:25 33655 8

原创 [Java 并发] Java并发编程实践 思维导图 - 第四章 对象的组合

[Java 并发] Java并发编程实践 思维导图 - 第四章 对象的组合。 整理的思维导图,希望对大家有所帮助。

2014-11-16 09:53:12 4929

原创 Effective JavaScript Item 63 注意异步调用中可能会被忽略的异常

异常处理是异步编程的一个难点。在同步的代码中,异常能够很容易地通过try catch语句来完成:try { f(); g(); h();} catch (e) { // handle any error that occurred...}但是在异步代码中,使用一个try代码块将所有可能出现的异常都包括在内是不现实的。实际上,异步API设置不能

2014-11-16 09:22:36 3574

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除