ElasticSearch由浅入深专栏
文章平均质量分 57
本人将在此致力于通过自己的整理,将ES相关知识和企业实战分享给大家,让大家都能牢牢掌握ES
格赚
程序员一站式创业社区,公众号同名。
展开
-
如何打造Elasticsearch全文检索系统之copy_to
全文检索场景在实际项目中,无界搜索具体查询某一个字段对于客户来说是不确定的,但是实际数据中需要检索的字段非常多。在使用elasticsearch时遇见了这样的需求:es聚合指定字段时聚合的结果里面只显示聚合的字段。但是在做报表时,我们发现一个问题:如果我们对员工进行聚合,但是我们还希望查看当前员工所在的班组,部门等信息。这时如果查询es两次,对于效率来说是不好的。这样,我们在设计的时候就需要将...原创 2018-12-29 17:14:42 · 788 阅读 · 0 评论 -
ElasticSearch教程-分布式集群之应对故障
我们已经说过Elasticsearch可以应对节点失效,所以让我们继续尝试。如果我们杀掉第一个节点的进程(以下简称杀掉节点),我们的集群看起来就像这样:图5:杀掉第一个节点后的集群我们杀掉的节点是一个主节点。一个集群必须要有一个主节点才能使其功能正常,所以集群做的第一件事就是各节点选举了一个新的主节点:Node 2。主分片1和2在我们杀掉Node 1时已经丢失,我们的索引在丢失主分...原创 2018-12-29 17:14:50 · 246 阅读 · 0 评论 -
ElasticSearch教程-分布式集群之横向扩展
随着应用需求的增长我们该如何扩展如果我们启动第三个节点我们的集群会重新组织自己就像图4图4包含3个节点的集群——分片已经被重新分配以平衡负载Node3包含了分别来自Node 1和Node 2的一个分片这样每个节点就有两个分片和之前相比少了一个这意味着每个节点上的分片将获得更多的硬件资源CPU、RAM、I/O。分片本身就是一个完整的搜索引擎它可以使用单一节点的所有资源。我们拥有6个分片3...原创 2018-12-29 17:15:02 · 1122 阅读 · 0 评论 -
ElasticSearch教程-分布式集群之增加故障转移
在单一节点上运行意味着有单点故障的风险——没有数据备份。幸运的是,要防止单点故障,我们唯一需要做的就是启动另一个节点。启动第二个节点为了测试在增加第二个节点后发生了什么,你可以使用与第一个节点相同的方式启动第二个节点(《运行Elasticsearch》一章),而且命令行在同一个目录——一个节点可以启动多个Elasticsearch实例。只要第二个节点与第一个节点有相同的cluster....原创 2018-12-29 17:15:12 · 602 阅读 · 1 评论 -
ElasticSearch教程-分布式集群之添加索引
为了将数据添加到Elasticsearch,我们需要索引(index)——一个存储关联数据的地方。实际上,索引只是一个用来指向一个或多个分片(shards)的“逻辑命名空间(logical namespace)”.一个分片(shard)是一个最小级别“工作单元(worker unit)”,它只是保存了索引中所有数据的一部分。在接下来的《深入分片》一章,我们将详细说明分片的工作原理,但是现在我们...原创 2018-12-29 17:14:34 · 365 阅读 · 0 评论 -
ElasticSearch教程-关于Elasticsearch MultiSearch 查询
关于Elasticsearch MultiSearch 查询,一个请求可同时支持多个查询import org.apache.log4j.LogManager;import org.apache.log4j.Logger;import org.apache.lucene.queryparser.flexible.core.builders.QueryBuilder;import org...原创 2018-12-22 17:32:35 · 2858 阅读 · 0 评论 -
ElasticSearch教程-分布式集群之集群健康
在Elasticsearch集群中可以监控统计很多信息,但是只有一个是最重要的:集群健康(cluster health)。集群健康有三种状态:green、yellow或red。GET /_cluster/health在一个没有索引的空集群中运行如上查询,将返回这些信息:{ "cluster_name": "elasticsearch", "status...原创 2018-12-22 17:31:08 · 268 阅读 · 0 评论 -
ElasticSearch教程-分布式集群之空集群
空集群如果我们启动一个单独的节点,它还没有数据和索引,这个集群看起来就像图1。图1:只有一个空节点的集群一个节点(node)就是一个Elasticsearch实例,而一个集群(cluster)由一个或多个节点组成,它们具有相同的cluster.name,它们协同工作,分享数据和负载。当加入新的节点或者删除一个节点时,集群就会感知到并平衡数据。集群中一个节点会被选举为主节点(ma...原创 2018-12-22 17:30:23 · 207 阅读 · 0 评论 -
ElasticSearch教程-分布式集群之集群内部工作方式
补充章节正如之前提及的,这是关于Elasticsearch在分布式环境下工作机制的一些补充章节的第一部分。这个章节我们解释一些通用的术语,例如集群(cluster)、节点(node)和分片(shard),Elasticsearch的扩展机制,以及它如何处理硬件故障。尽管这章不是必读的——你在使用Elasticsearch的时候可以长时间甚至永远都不必担心分片、复制和故障转移——但是它会帮助...原创 2018-12-22 17:29:33 · 264 阅读 · 0 评论 -
ElasticSearch教程-ES分布式的特性
分布式的特性在章节的开始我们提到Elasticsearch可以扩展到上百(甚至上千)的服务器来处理PB级的数据。然而我们的教程只是给出了一些使用Elasticsearch的例子,并未涉及相关机制。Elasticsearch为分布式而生,而且它的设计隐藏了分布式本身的复杂性。Elasticsearch在分布式概念上做了很大程度上的透明化,在教程中你不需要知道任何关于分布式系统、分片、集群发现...原创 2018-12-22 17:28:52 · 275 阅读 · 0 评论 -
ElasticSearch教程-聚合查询
分析最后,我们还有一个需求需要完成:允许管理者在职员目录中进行一些分析。 Elasticsearch有一个功能叫做聚合(aggregations),它允许你在数据上生成复杂的分析统计。它很像SQL中的GROUP BY但是功能更强大。举个例子,让我们找到所有职员中最大的共同点(兴趣爱好)是什么:GET /megacorp/employee/_search{ "aggs": { ...原创 2018-12-22 17:28:11 · 497 阅读 · 0 评论 -
ElasticSearch教程-索引的介绍
我们现在开始进行一个简单教程,它涵盖了一些基本的概念介绍,比如索引(indexing)、搜索(search)以及聚合(aggregations)。通过这个教程,我们可以让你对Elasticsearch能做的事以及其易用程度有一个大致的感觉。我们接下来将陆续介绍一些术语和基本的概念,但就算你没有马上完全理解也没有关系。我们将在本书的各个章节中更加深入的探讨这些内容。所以,坐下来,开始以旋风般...原创 2018-12-22 17:26:14 · 248 阅读 · 0 评论 -
ElasticSearch教程-文档的概念介绍
面向文档应用中的对象很少只是简单的键值列表,更多时候它拥有复杂的数据结构,比如包含日期、地理位置、另一个对象或者数组。总有一天你会想到把这些对象存储到数据库中。将这些数据保存到由行和列组成的关系数据库中,就好像是把一个丰富,信息表现力强的对象拆散了放入一个非常大的表格中:你不得不拆散对象以适应表模式(通常一列表示一个字段),然后又不得不在查询的时候重建它们。Elasticsearch是...原创 2018-12-22 17:25:02 · 217 阅读 · 0 评论 -
ElasticSearch教程-通过API与ES交互
与Elasticsearch交互如何与Elasticsearch交互取决于你是否使用Java。Java APIElasticsearch为Java用户提供了两种内置客户端:节点客户端(node client):节点客户端以无数据节点(none data node)身份加入集群,换言之,它自己不存储任何数据,但是它知道数据在集群中的具体位置,并且能够直接转发请求到对应的节点上。...原创 2018-12-22 17:24:17 · 392 阅读 · 0 评论 -
ElasticSearch教程-ES安装
安装Elasticsearch理解Elasticsearch最好的方式是去运行它,让我们开始吧!安装Elasticsearch唯一的要求是安装官方新版的Java,地址:www.java.com你可以从 elasticsearch.org\/download 下载最新版本的Elasticsearch。博客之家curl -L -O http://download.elasticsea...原创 2018-12-22 17:23:14 · 188 阅读 · 0 评论 -
es进行聚合操作时提示Fielddata is disabled on text fields by default
根据es官网的文档执行GET /megacorp/employee/_search{ "aggs": { "all_interests": { "terms": { "field": "interests" } } }}这个例子时,报错{ "error": { "root_cause"原创 2018-12-02 19:31:04 · 604 阅读 · 0 评论 -
ElasticSearch 聚合筛选,类似SQL里面的having
背景我们在实际业务场景中会遇到聚合筛选的需求,需要先分组然后聚合,再通过聚合的结果进行筛选,关系型数据库中有having或者子查询来实现,ES中key使用 bucket_selector 来实现此功能实际业务场景 sapv博客之家需要找出下单次数大于等于2单,并且平均下单金额大于等于100的客户 在关系型数据库中对应的SQL语句SELECT userId, ...原创 2018-10-19 19:59:19 · 1732 阅读 · 0 评论 -
elasticsearch6.2.4 DSL java API 插入和获取数据
创建MAVEN项目,maven依赖如下:<dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>6.2.4</version></depe...原创 2018-10-19 19:55:03 · 1429 阅读 · 1 评论 -
ElasticSearch基础-Lucence的总体架构
了解ES之前,我们确实需要了解一下Lucence的架构细节,Lucence总体包括:文档(document): 索引与搜索的主要数据载体,它包含一个或者多个字段,存放将要写入索引的或者将从索引中检索出来的出数据。字段(field): 文档的一个片段,它包含字段的名称和字段的内容两个部分。词项(term):搜索时的一个单位,代表了文本中的一个词。词条(token):词项在字段文本中的一次出现,包括词...原创 2018-04-28 17:21:31 · 1159 阅读 · 0 评论 -
Elasticsearch使用过程中Result window is too large问题处理
在使用Elasticsearch进行search查询时,出现了Result window is too large的问题。报错如下:QueryPhaseExecutionException[Result window is too large, from + size must be less than or equal to: [10000] but was [10200]. Se...原创 2018-02-01 15:20:19 · 4438 阅读 · 1 评论 -
使用ES如何创建子查询 PipelineAggregatorBuilders
对于平时的group by 我们都知道使用AggregationBuilder 可以解决AggregationBuilder aggregationBuilder = AggregationBuilders.terms("nameAgg").field("name.keyword").size(Integer.MAX_VALUE) //1 .subAggregation(...原创 2018-02-01 17:56:24 · 5692 阅读 · 1 评论 -
Elasticsearch 中如何巧妙地使用聚合函数达到数据库中having的效果
在现实开发中难免会遇到一些业务场景,通过聚合得出相应的频次并进行筛选1.使用 minDocCount 直接上代码,大家可自行根据业务场景更改//正确答案SearchRequestBuilder search = transportlient.prepareSearch("bigdata_idx_2").setTypes("captureCompare");FilterAggr...原创 2018-02-01 15:09:55 · 4922 阅读 · 0 评论 -
ElasticSearch教程-ES是什么
Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。Elasticsear...原创 2018-12-22 17:12:29 · 351 阅读 · 0 评论