[ElasticSearch]嵌套对象之嵌套类型

nested类型是一种特殊的对象object数据类型(specialised version of the object datatype ),允许对象数组彼此独立地进行索引和查询。1. 对象数组如何扁平化内部对象object字段的数组不能像我们所期望的那样工作。 Lucene没有内部对象的概念,所以Elasticsearch将对象层次结构扁平化为一个字段名称和值的简单列表。 例如,以下文件:cu...
阅读(1216) 评论(0)

[ElasticSearch2.x]嵌套对象

考虑到在Elasticsearch中创建,删除和更新的单个文档是原子操作的,因此在相同文档中存储紧密相关的实体是有意义的。 例如,我们可以在一个文档中存储一个订单和其所有的订单线(order lines),或者我们可以通过传递一组评论来将一篇博客文章及其所有评论存储在一起:PUT /my_index/blogpost/1 { "title": "Nest eggs", "body": "...
阅读(300) 评论(0)

[ElasticSearch]分析之Analysis(分析)

分析(analysis)是将文本(如任何电子邮件的正文)转换为添加到倒排索引中进行搜索的tokens或terms的过程。 分析由分析器analyzer执行,分析器可以是内置分析器或者每个索引定制的自定义分析器。1. 索引时分析(Index time analysis)例如在索引时,内置的英文分析器将会转换下面句子:"The QUICK brown foxes jumped over the laz...
阅读(388) 评论(0)

[ElasticSearch]Search之分页

之前的文章[ElasticSearch]搜索我们知道,我们的空搜索匹配到集群中的13个文档。 但是,命中数组中只有10个文档(文章只显示了2条数据,故意省略掉)。 我们如何查看其他文档呢?与SQL使用LIMIT关键字返回一个“页面”的结果数据相同,Elasticsearch接受from和size参数:size 表示应返回的结果数,默认为10from 表示应跳过的初始结果数,默认为0如果想每页显示五...
阅读(988) 评论(0)

[ElasticSearch]搜索

1. 空搜索测试数据:https://gist.github.com/clintongormley/85792811.1 搜索最基本的搜索API是空搜索(empty search),它没有指定任何的查询条件,只返回集群索引中的所有文档:curl -XGET 'localhost:9200/_search?pretty'Java版本:SearchRequestBuilder searchReques...
阅读(657) 评论(0)

[ElasticSearch2.x]Filter之Cache

过滤器(Filter)的核心实际是采用一个bitset记录与过滤器匹配的文档。当Elasticsearch确定一个bitset可能会在将来被重用时,它将被直接缓存在内存中供以后使用。一旦缓存,这些bitset可以在使用相同查询的任何地方重复使用,而无需再次重新评估整个查询。这些缓存的bitset是非常“机智”的:它们是增量更新的。 在索引新文档时,只需要将那些新文档添加到现有的bitset中,而不...
阅读(256) 评论(0)

[ElasticSearch2.x]Filter之Filter原理

1. FilterBuilders废弃org.elasticsearch.index.queries.FilterBuilders从ElasticSearch2.0开始已被删除,作为查询和过滤器组合的一部分。 这些过滤器现在可以在QueryBuilders中使用具有相同名称的方法。所有可以接受FilterBuilder的方法现在也可以接受QueryBuilder。以前使用方式:FilterBuil...
阅读(507) 评论(0)

[ElasticSearch2.x]Queries vs Filters

1. 查询与过滤Elasticsearch 使用的查询语言(DSL) 拥有一套查询组件(queries),这些组件可以以无限组合的方式进行搭配(mixed and matched)。这套组件可以在以下两种上下文中使用:过滤上下文(filtering context)和查询上下文(query context)。当在过滤上下文(filtering context)中使用 时,该查询被设置成一个“不评分...
阅读(307) 评论(0)

[ElasticSearch2.x]副本分片

1. 副本分片到目前为止,我们只讨论了主分片,但是我们还有另一个工具:副本分片。 副本分片的主要目的是为了故障转移(failover),如深入集群生命周期所述:如果持有主分片的节点死亡,则将其副本提升为主分片的角色。在索引写入时,副本分片做着与主分片相同的工作。新文档首先被索引进主分片然后再同步到其它所有的副本分片。增加副本数并不会增加索引容量。但是,副本分片可以为读取请求提供帮助。 如果通常情况...
阅读(360) 评论(0)

[Guava源码日报](11)BiMap

BiMap提供了一种新的集合类型,它提供了key和value的双向关联的数据结构。通常情况下,我们在使用Java的Map时,往往是通过key来查找value的,但是如果我们想根据value值查找key时,我们就需要额外编写一些代码来实现这个功能。BiMap为我们实现了这个功能。@Test public void test1(){ BiMap weekNameMap = Ha...
阅读(230) 评论(0)

[Guava源码日报](10)Iterables

1. 简介Iterables类包含了一系列的静态方法,来操作或返回Iterable对象。除非另外说明,每一个Iterables方法都会有一个Iterators的方法。2. 源码分析2.1 构造器Iterables类只提供了私有构造器,因此只能通过静态方法来使用Iterables类。public final class Iterables { private Iterables() {}2.2 ...
阅读(315) 评论(0)

[Guava源码日报](9)Closeables

它的作用是收集可以关闭的资源并在合适的时候关闭它们。如下使用:Closer closer = Closer.create(); try { InputStream in = closer.register(openInputStream()); OutputStream out = closer.register(openOutputStream()); // do stu...
阅读(266) 评论(0)

[Guava源码日报](8)ImmutableCollection

不可变集合,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。1. UnmodifiableXXXJDK提供了UnmodifiableXXX(Collections.unmodifiable)用于生成不可变容器。不可变容器无法修改返回容器的内容。但是这里值的是无法通过set或add方法修改容器内的reference的指向,而不是禁止reference...
阅读(175) 评论(0)

[Guava源码日报](7)Throwables分析

有时候,你会想把捕获到的异常再次抛出。这种情况通常发生在Error或RuntimeException被捕获的时候,你没想捕获它们,但是声明捕获Throwable和Exception的时候,也包括了了Error或RuntimeException。Guava提供了若干方法,来判断异常类型并且重新传播异常。例如:try { someMethodThatCouldThrowAnything(); ...
阅读(249) 评论(0)

[Guava源码分析](6)Objects分析

1. 私有构造器private Objects() {}2. 判断两个可能为null的对象是否相等public static boolean equal(@Nullable Object a, @Nullable Object b) { return a == b || (a != null && a.equals(b)); }当一个对象中的字段可以为null时,实现Obj...
阅读(245) 评论(0)

[Guava源码日报](5)Optional分析

大多数情况下,开发人员使用null表明的是某种缺失情形:可能是已经有一个默认值,或没有值,或找不到值。例如,Map.get返回null就表示找不到给定键对应的值。Guava用Optional表示可能为null的T类型引用。一个Optional实例可能包含非null的引用(我们称之为引用存在),也可能什么也不包括(称之为引用缺失)。它从不说包含的是null值,而是用存在或缺失来表示。但Optiona...
阅读(386) 评论(2)

[Guava源码日报](4)Preconditions

Preconditions是guava提供的用于进行代码校验的工具类,其中提供了许多重要的静态校验方法,用来简化我们工作或开发中对代码的校验或预 处理,能够确保代码符合我们的期望,并且能够在不符合校验条件的地方,准确的为我们显示出问题所在,接下来,我们就来学习使用Preconditions 进行代码校验。我们可以轻松的写出我们自己的先决条件,如下:public static Object chec...
阅读(208) 评论(0)

[Guava源码日报](3)Joiner分析

把任意的字符串,通过一些分隔符将它们连接起来是大多数程序员经常处理东西。以前的方式就是迭代,append等操作,使用Joiner可以更方便。我们先看一下以前的处理方式:// 通过分隔符将字符串链接在一起 public static String builder(ListString> list,String delimiter){ StringBuilder string...
阅读(233) 评论(0)

[Hive]JsonSerde使用指南

注意:重要的是每行必须是一个完整的JSON,一个JSON不能跨越多行,也就是说,serde不会对多行的Json有效。 因为这是由Hadoop处理文件的工作方式决定,文件必须是可拆分的,例如,Hadoop将在行尾分割文本文件。// this will work { "key" : 10 } // this will not work { "key" : 10 }2. 下载Jar使用之前先下载...
阅读(1104) 评论(0)

[Hive]Lateral View使用指南

1. 语法lateralView: LATERAL VIEW udtf(expression) tableAlias AS columnAlias (',' columnAlias)* fromClause: FROM baseTable (lateralView)*2. 描述Lateral View一般与用户自定义表生成函数(如explode())结合使用。 如内置表生成函数中所述,UDTF为每...
阅读(552) 评论(0)
803条 共41页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:1240475次
    • 积分:19943
    • 等级:
    • 排名:第437名
    • 原创:621篇
    • 转载:132篇
    • 译文:50篇
    • 评论:173条
    博客专栏
    文章分类
    最新评论