
ElasticSearch
腊八粥2018
这个作者很懒,什么都没留下…
展开
-
ElasticSearch 应用开发(十二)term query和match query、filter和must区别
term query和match query、filter和must区别1.term query和match query区别2.Query和Filter区别1.term query和match query区别针对字段类型是text类型,term 和 match 的最大区别是:term搜索时不分词match搜索时需要分词term用于精确查询,match用于全文检索其中,match等于是...原创 2020-01-15 18:41:28 · 2623 阅读 · 0 评论 -
ElasticSearch源码(一)ElasticSearch5.6.16源码导入idea环境搭建
想读ElasticSearch源码,从git上拉取代码,导入idea。就是这么简单的一个想法,记录一下过程。1.准备1.1哪个版本?ElasticSearch版本更新真的是很快,每个版本都有大量的新特性,想读源码之前总得闹清楚,想读哪个版本的吧?本文用5.6.16 为什么是这个版本?(1)5.x版本,这个版本应该是最新的,公司的ES集群还在5.x,没有进行大的升级(...原创 2020-01-09 18:57:32 · 986 阅读 · 0 评论 -
ElasticSearch 应用开发(十一)ElasticSearch多数据源配置
开发过程中难免遇到多个ElasticSearch数据源的配置问题,如果类同于项目中关系型数据库Mysql的多数据源,那么在实际业务场景中ElasticSearch的多数据源需求更迫切。在项目中只需要有Spring即可,没必要是Spring-data-elasticsearch,如果引入Spring-data-elasticsearch需要特别注意集成es版本和服务器中es集群版本。1...原创 2019-12-25 18:20:01 · 2056 阅读 · 0 评论 -
ElasticSearch 开发总结(十)——分页 from/size与scroll与search after
ElasticSearch分页的几种方式与对比:(1)from/size (2)scroll (3)search after1.from size和 SQL 使用LIMIT关键字返回单个page结果的方法相同,Elasticsearch 接受from和size参数:size显示应该返回的结果数量,默认是10from 显示应该跳过的初始结果数量...原创 2019-12-12 15:41:28 · 1844 阅读 · 0 评论 -
ElasticSearch 开发总结(九)——SearchType:DFS_QUERY_THEN_FETCH和QUERY_THEN_FETCH
1.SearchTypeES的搜索类型 有一个类SearchType(如下图示),关于该类的描述:Search type represent the manner at which the search operation is executed.ES的搜索分scatter/gather两个步骤:scatter阶段:客户端向10个分片发起搜索请求;gather阶段:10个分片完...原创 2019-12-10 17:15:20 · 6304 阅读 · 0 评论 -
ElasticSearch 应用开发(六)TransportClient——Java API(2)
接上篇,继续介绍transportclient Java API4.AggregationsElasticSearch搜索时用的Aggregations与关系型数据库Mysql中 count() gropy by max min avg等聚合函数类似。Aggregations 包含两个重要的概念:1.桶(bucket):数据分组。与group by类似;2.指标(me...原创 2019-04-01 09:39:29 · 670 阅读 · 0 评论 -
ElasticSearch 应用开发(四)Java Client 连接ElasticSearch集群方法的对比与总结
ElasticSearch 应用开发(二)Java Client 连接ElasticSearch集群ElasticSearch 应用开发(三)基于commons-pool2和TransportClient的ElasticSearch连接池上述内容,介绍java client连接Elasticsearch的方法,简单做一个对比和总结1.对比1.1单线程测试获取连接地址(a)Tra...原创 2019-04-01 09:38:31 · 1294 阅读 · 0 评论 -
ElasticSearch 开发总结(六)—exception caught on transport layer[....]closing connection
elasticsearch集群版本5.6.10,Java代码中Maven引入版本5.6.10,使用TransportClient连接ES集群,出现这个错误:[2019-03-10T15:16:21,269][WARN ][o.e.t.n.Netty4Transport ] [master] exception caught on transport layer [[id: 0x0844f1...原创 2019-03-11 15:50:59 · 17623 阅读 · 2 评论 -
ElasticSearch 应用开发(三)基于commons-pool2和TransportClient的ElasticSearch连接池
Java Client连接Elasticsearch集群,如果用单例模式或者SpringBean(本质也是单例模式),若项目多个模块都要使用Client进行增删改查,就需要进行池化。利用commons-pool2可以自定义对象池,基于此,可以实现线程池的方式连接Elasticsearch集群1.commons-pool2以下博客,对commons-pool2进行介绍,基本上可以理...原创 2019-03-11 15:51:22 · 2330 阅读 · 0 评论 -
ElasticSearch 开发总结(七)—— failed to send join request to master[...] reason RemoteTransportException
ElasticSearch版本6.6.1本地搭建了一个包含三个节点的ELasticsearch集群,作为测试环境,三个节点都是这样的错:failed to send join request to master。具体错误日志如下:[2019-03-11T18:00:19,521][INFO ][o.e.d.z.ZenDiscovery ] [slave] failed to se...原创 2019-03-12 09:51:31 · 6147 阅读 · 0 评论 -
ElasticSearch 应用开发(五)TransportClient——Java API(1)
TransportClient Java API主要是给Java开发者的开发接口,RESTful的所有请求几乎都有与之对应的Java API,接下来将简单介绍1.JavadocThe javadoc for the transport client can be found athttps://artifacts.elastic.co/javadoc/org/elasticsearch/...原创 2019-04-01 09:39:13 · 925 阅读 · 0 评论 -
ElasticSearch 应用开发(八)Java High Level Rest Client——Java API
1.概述Java High Level REST ClientElasticsearch 官方高级客户端: 基于低级客户端,提供特定的方法的API,并处理请求编码和响应解码Java高级REST客户端可以在Java Low Level REST客户机之上工作。 其主要目标是公开特定方法的API,接受请求对象作为参数并返回响应对象,以便客户端自己处理请求编组和响应解组。每个API可以同...原创 2019-04-01 09:39:49 · 4609 阅读 · 1 评论 -
ElasticSearch 应用开发(八)Transport Client和Rest Client对比
本文将重点探讨ElasticSearch Client的相关知识,重点关注TransportClient与Rest Client。Elasticsearch client 是我们进入ElasticSearch的大门。1、概述所有Elasticsearch操作都是使用Client对象执行的。Client 定义的所有API都是异步执行的。(要么使用事件监听器回调或者使用Future模式)El...转载 2019-05-21 16:25:50 · 6277 阅读 · 0 评论 -
ElasticSearch 应用开发(十)Transport Client和Rest Client网络协议
TransportClient和RestClient 网络协议的对比(1)TransportClient:java客户端的方式是以TCP协议在9300端口上进行通信:TransportClient、NodeClient(2.3版本弃用);java transportClient api提供了Query Builder来协助构建查询对象;基于java api封装的orm框架,封...原创 2019-12-25 11:37:54 · 1419 阅读 · 0 评论 -
ElasticSearch 开发总结(八)——ElasticSearch 两次完全一样的搜索语句,第一次和第二次的返回结果不一致
一、问题描述针对ElasticSearch进行搜索,两次完全一致的搜索语句(在两次搜索过程中,没有更新、删除、新增等操作),第一次和第二次的返回结果不一致,之后的搜索结果又没有变化。这种异常不是很常见,不容易复现,之前遇到过,没放在心上,于是上官网查了查。二、个人总结1.首先,可能是ES近实时的特性的影响,因为更新、新增等操作并不是实时的(详见:ElasticSearch 基...原创 2019-07-24 18:20:43 · 4608 阅读 · 0 评论 -
ElasticSearch 应用开发(一)ElasticSearch的安装
ElasticSearch集群安装,网上有很多博客,ES可以安装在windows、linux等操作系统上,只做简单介绍(1)windows上安装elasticsearchhttps://blog.youkuaiyun.com/shubingzhuoxue/article/details/80998738(2)linux上安装elasticsearchhttps://blog.youkuaiyun.com/...转载 2019-03-05 15:38:39 · 287 阅读 · 0 评论 -
ElasticSearch 应用开发(七)Java Low Level Rest Client——Java API
1.概述Java restclient分为两种:Java Low Level Rest Client(本节介绍重点)、Java HighLevel Rest Client(下节介绍)。Java Low Level Rest ClientElasticsearch 官方低级客户端: 通过http协议 与Elasticsearch服务进行通信。请求编码和响应解码保留给用户实现。与...原创 2019-04-01 09:39:39 · 3856 阅读 · 0 评论 -
ElasticSearch 开发总结(二)——java.lang.OutOfMemory:unable to create new native thread
1.ElasticSearch 批量建索引,集群出现以下错误java.lang.OutOfMemoryError: unable to create new native threadjava.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: unable to create new native thread...原创 2019-01-08 18:22:41 · 2205 阅读 · 0 评论 -
ElasticSearch 基本原理 应用开发 开发总结 源码解读
随着ElasticSearch的广泛应用,关于ES的相关博客、书籍、视频等内容也越来越多,但是相关的一些基本原理的内容还是比较缺乏。算起来,从接触ES到现在已经三年多了,这个博客系列,包含自己学习、使用过程中遇到的问题及解决思路、解决办法,也包含一些基本知识、基本原理的内容,自己也总结一下,总归有些收获。个人用过ES1.7——>2.1——>5.2——>6.3——>6.6等多...原创 2019-02-02 11:27:59 · 591 阅读 · 0 评论 -
ElasticSearch 开发总结(一)——脑裂(split-brain)现象
###################################################################################注意:脑裂的前提是所有节点都是存活状态,若存在部分节点、部分节点没有存活,请检查其他异常!!!ElasticSearch 脑裂(split-brain),在维护ElasticSearch集群的时候,基本都会遇到(无奈~...原创 2019-01-09 15:27:20 · 2711 阅读 · 0 评论 -
ElasticSearch 基本原理(一)初识
1.什么是ElasticSearch?ElasticSearch官网定义:是一个支持分布式RESTful搜索和分析引擎,能够解决越来越多的用例。 作为Elastic Stack的核心,能够集中存储您的数据,以便您可以发现预期并发现特殊情况。百度百科定义:是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elastics...原创 2019-02-02 11:08:45 · 418 阅读 · 0 评论 -
ElasticSearch 基本原理(二)总体架构设计
ElasticSearch 架构设计层次ElasticSearch的总体结构,如下图第一层 —— Gateway:即Elasticsearch支持的索引数据的存储格式,当Elasticsearch关闭再启动的时候,它就会从这个gateway里面读取索引数据;支持的格式有:本地的Local FileSystem、分布式的Shared FileSystem、Hadoop的文件系统HDF...原创 2019-02-02 17:56:44 · 987 阅读 · 0 评论 -
ElasticSearch 基本原理(三)ElasticSearch与Lucene、Solr、Mysql的关系
信息检索包含内容非常广,包含文本(搜索引擎)、图片(以图搜索)、音频(歌曲识别)、视频等多种类型数据的检索。为了高效的检索,通常都用建立索引的方式提高检索速度。因为不同类型的数据存储格式、特征提取方法等等都是不同的,所以建立索引的类型也是不同的,检索的方法也是不同的。对文本建立索引的数据结构是倒排索引;对关系型数据库中的数据建立索引的数据结构是B-tree;对图片建立索引,根据特征提取方式的...原创 2019-02-02 11:21:32 · 692 阅读 · 0 评论 -
ElasticSearch 基本原理(五)elasticsearch.yml 配置文件详解
ElasticSearch的zip包下载后,如图所示,有一个非常重要的配置文件夹config,其中有一个elasticsearch.yml配置文件觉得ElasticSearch集群对集群是否正常启动、性能优化有决定性作用:不同版本的ES配置文件并不是完全一致的,注意配置文件和版本的适配关系,需要关心ES官网的Introduction,以ES5.2版本为例# ======...原创 2019-02-02 17:47:22 · 671 阅读 · 0 评论 -
ElasticSearch 应用开发(二)Java Client 连接ElasticSearch集群
利用Java API连接不同版本的ElasticSearch,方法是不一样的,本文只介绍主流的方法。#####无论如何请确保Client的版本和ElasticSearch集群版本保持一致,否则有可能出现不可预知的错误#####1.Java Client 连接ES集群(1)Node Client(java语言版本,已经在2.3版本中已经弃用)客户端节点也是es节点,加入es集群和...原创 2019-03-06 15:50:15 · 2397 阅读 · 0 评论 -
ElasticSearch 基本原理(四)近实时(Near Real Time ,NRT)分析
ElasticSearch (Near Real Time )NRT 分析Elasticsearch的核心优势就是(Near Real Time NRT)近乎实时,Elasticsearch能够做到准实时,而并不是完全的实时。下面介绍Elasticsearch是如何索引数据的整个流程。先上图:首先,当我们对记录进行修改时,es会把数据同时写到内存缓存区和translog中。而这个时...转载 2019-03-01 09:17:19 · 2589 阅读 · 1 评论 -
ElasticSearch 开发总结(四)——NoNodeAvailableException: None of the configured nodes are available
NoNodeAvailableException: None of the configured nodes are available节点不可用,出现这个错误,简单思考一下,可能有以下几种原因:(1)ES集群处于异常状态不可用;(2)Java client正常 ES 集群正常,但是连接不到集群;(3)Java client异常,连接不到ES集群排查步骤:1.查看集群是否...原创 2019-03-01 09:20:56 · 1617 阅读 · 0 评论 -
ElasticSearch 基本原理(六)字段类型
ElasticSearch往集群中进行操作都是以JSON格式为标准,JSON支持的字段类型,决定了ElasticSearch的动态映射字段推断的字段类型。1.JSON字段类型在 JSON 中,值必须是以下数据类型,对应示例如下字段类型 示例 字符串 { "name":"John" } 数字 { "age":30 } ...原创 2020-01-06 17:41:45 · 654 阅读 · 0 评论 -
ElasticSearch 开发总结(五)——Elasticsearch“StatusLogger Log4j2 could not find a logging implementation"
Java API 操作 ElasticSearch5.6.10报错Elasticsearch “StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath.”根据提示很简答,需要加log4j-core日志工具包,不过需要多一个,maven添加如下依赖...原创 2019-03-05 11:17:28 · 1108 阅读 · 0 评论 -
ElasticSearch 开发总结(三)——Unavailable Shards Exception解决思路
今天ElasticSearch集群出现UnavailableShardsException错误,经过查找及总结,Mark一下个人排查方案第一步:查看集群是否处于健康状态1.elasticsearch 集群的健康状态用三种颜色red yellow green表示green:表示集群处于健康状态;yellow:表示所有主分片可用,但不是所有副本分片都可用;red:表示不是所有的主分片...原创 2019-01-07 16:35:28 · 14505 阅读 · 1 评论