elasticsearch使用教程

 本文转自csdn:

elasticsearch更改node id生成方法

集群中节点的id是由discovery定义的,默认es有两种实现方式,一种是 org.elasticsearch.discovery.local.LocalDiscovery 表示把es的节点启动在同一个jvm的环境下,这样就可以通过AtomicLong来进行数字递增的id生成。 另一种是 org.elasticsearch.discovery.zen.ZenDiscovery...
 阅读(201) 评论(0)
 

elasticsearch手动控制分片分布

elasticsearch可以通过reroute api来手动进行索引分片的分配。 不过要想完全手动,必须先把cluster.routing.allocation.disable_allocation参数设置为true,禁止es进行自动索引分片分配,否则你从一节点把分片移到另外一个节点,那么另外一个节点的一个分片又会移到那个节点。   一共有三种操作,分别为:移动(move),取...
 阅读(251) 评论(0)
 

Elasticsearch——Templates 模板

Elasticsearch可以预先定义索引模板,当创建新索引时,可以自动匹配模板。模板包括settings和mappings,以及一个匹配索引的正则。 1. 使用curl方式操作templates 详细查阅:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-templates.ht...
 阅读(640) 评论(1)
 

Elasticsearch-索引优化篇2

内存和打开的文件数 如果你的elasticsearch运行在专用服务器上,经验值是分配一半内存给elasticsearch。另一半用于系统缓存,这东西也很重要的。 你可以通过修改ES_HEAP_SIZE环境变量来改变这个设定。在启动elasticsearch之前把这个变量改到你的预期值。另一个选择上球该elasticsearch的ES_JAVA_OPTS变量,这个变量时在启动脚本(el...
 阅读(1094) 评论(1)
 

Elasticsearch-索引优化篇1

ES索引优化篇主要从两个方面解决问题, 一是索引数据过程; 二是检索过程。(本文主要介绍) 索引数据过程我在上面几篇文章中有提到怎么创建索引和导入数据,但是大家可能会遇到索引数据比较慢的过程。其实明白索引的原理就可以有针对性的进行优化。ES索引的过程到相对Lucene的索引过程多了分布式数据的扩展,而这ES主要是用tranlog进行各节点之间的数据平衡。所以从上我可以通过索引的setting...
 阅读(924) 评论(1)
 

ElasticSearch的各种服务的URL

索引相关 URL 说明 /index/_search 不解释 /_aliases 获取或操作索引的别名 /index/   /index/type/ 创建或操作类型 /index/_mapping 创建或操作mapping /index/_settings 创建或操作设置(number_of_shards是不可...
 阅读(861) 评论(0)
 

elasticsearch java api——客户端 org.elasticsearch.client

注:该文及后续的几篇文章为概述,之后会将实例补充到文章中。 在elasticsearch源代码中,进入到org.elasticsearch.client,你会发现下图所示的类: 我们从最外层开始。 1 org.elasticsearch.client.AdminClient接口 AdminClient下有两个方法: 1) cluster(),产生一...
 阅读(852) 评论(0)
 

Elasticsearch java api——节点实例化

注:后面提到的所有代码都是以java为例。 要连接到集群,首先要告诉集群:你是谁,你有什么特征。在es中体现为实例化节点。 es通过org.elasticsearch.node.NodeBuilder的build()或者node()方法实例化节点,build()创建节点而不启动,而node()方法等价于build().start(),即创建并启动。 首先实例化NodeBuilde...
 阅读(372) 评论(0)
 

elasticsearch java api优化

client.admin().indices().prepareOptimize("product").setMaxNumSegments(1).execute().actionGet(); client.admin().indices().prepareOptimize("product").setMaxNumSegments(1).execute().actionGet();...
 阅读(294) 评论(1)
 

一些国外优秀的elasticsearch使用案例

Github “Github使用Elasticsearch搜索20TB的数据,包括13亿的文件和1300亿行的代码” 这个不用介绍了吧,码农们都懂的,Github在2013年1月升级了他们的代码搜索,由solr转为elasticsearch,目前集群规模为26个索引存储节点和8个客户端节点(负责处理搜索请求),详情请看官方博客 https://github.com/blog/1381...
 阅读(664) 评论(0)
 

Elasticsearch Java虚拟机配置详解

引言: 今天,事情终于发生了。Java6(Mustang),是2006年早些时候出来的,至今仍然应用在众多生产环境中,现在终于走到了尽头。已经没有什么理由阻止迁移到Java7(Dolphin)上了。 这也促使我想写一篇关于在ElasticSearch上配置Java6和7的细微差异的博文。 Elasticsearch对Java虚拟机进行了预先的配置。通常情况下,因为这些配置的选择还...
 阅读(339) 评论(0)
 

Elasticsearch源码分析之二------索引过程源码概要分析

lasticsearch的索引逻辑简单分析,这里只是理清主要的脉络,一些细节方面以后的文章或会阐述。 假如通过java api来调用es的索引接口,先是构造成一个json串(es里表示为XContent,是对要处理的内容进行抽象),在IndexRequest里面指定要索引文档到那个索引库(index)、其类型(type)还有文档的id,如果没有指定文档的id,es会通过UUID工...
 阅读(414) 评论(0)
 

elasticsearch------索引修复

在使用基于lucene的各类搜索引擎(如:elasticsearch、solr)时,有可能出现类似如下的错误: Caused by: java.io.EOFException: read past EOF: NIOFSIndexInput(path="/usr/local/sas/escluster/data/cluster/nodes/0/indices/index/5/index/_59ct...
 阅读(279) 评论(0)
 

生产环境使用elasticsearch遇到的一些问题以及解决方法(不断更新)

1.由gc引起节点脱离集群      因为gc时会使jvm停止工作,如果某个节点gc时间过长,master ping3次(zen discovery默认ping失败重试3次)不通后就会把该节点剔除出集群,从而导致索引进行重新分配。 解决方法: (1)优化gc,减少gc时间。(2)调大zen discovery的重试次数(es参数:ping_retries)和超时时间(es参数:p...
 阅读(790) 评论(0)
 

Elasticsearch源码分析之一——使用Guice进行依赖注入与模块化系统

elasticsearch使用google开源的依赖注入框架guice,这个项目号称比spring快100倍,具体性能没有测试过,不过由于其代码比较简洁,比spring快很有可能,是不是快那么多就不知道了。先介绍下guice的基本使用方法。 elasticsearch是直接把guice的源码放到自己的包内(es把很多开源项目的代码都直接集成到自己项目中,省得依赖一堆的jar包,也使es的jar包...
 阅读(121) 评论(0)
 

elasticsearch高级配置之线程池设置

一个Elasticsearch节点会有多个线程池,但重要的是下面四个: 索引(index):主要是索引数据和删除数据操作(默认是cached类型) 搜索(search):主要是获取,统计和搜索操作(默认是cached类型) 批量操作(bulk):主要是对索引的批量操作(默认是cached类型) 更新(refresh):主要是更新操作(默认是cached类型) 可以通过给设置一个参...
 阅读(183) 评论(0)
 

elasticsearch java API ------使用More like this实现基于内容的推荐

基于内容的推荐通常是给定一篇文档信息,然后给用户推荐与该文档相识的文档。Lucene的api中有实现查询文章相似度的接口,叫MoreLikeThis。Elasticsearch封装了该接口,通过Elasticsearch的More like this查询接口,我们可以非常方便的实现基于内容的推荐。 先看一个查询请求的json例子: [plain] view plainc...
 阅读(295) 评论(0)
 

elasticsearch高级配置之分片分布

分片分布是把索引分片分布到节点的过程。这个操作会在初次启动集群,副本分配,负载均衡,或增加删除节点时进行。 下面是一些与分片分布相关的设置: cluster.routing.allocation.allow_rebalance 设置根据集群中机器的状态来重新分配分片,可以设置为always, indices_primaries_active和indices_all_active,默认是设...
 阅读(490) 评论(0)
 

elasticsearch集群监控工具bigdesk

bigdesk是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等。项目git地址: https://github.com/lukas-vlcek/bigdesk。和head一样,它也是个独立的网页程序,使用方式和head一样。 插件安装运行: 方法1: 1.bin/plugin -in...
 阅读(416) 评论(0)


 

elasticsearch集群管理工具head插件

elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序,你可以通过插件把它集成到es 插件安装方法1: 1.elasticsearch/bin/plugin -install Aconex/elasticsearch-head 2.运行es 3.打开http://localhost:9200/_plugin/h...


 

elasticsearch中文分词集成

elasticsearch官方只提供smartcn这个中文分词插件,效果不是很好,好在国内有medcl大神(国内最早研究es的人之一)写的两个中文分词插件,一个是ik的,一个是mmseg的,下面分别介绍下两者的用法,其实都差不多的,先安装插件,命令行: 安装ik插件: [plain] view plaincopy https://github.com/...
 阅读(796) 评论(0)
 

elasticsearch资料

elasticsearch中文翻译网站:http://www.elasticsearch.cn/...
 阅读(271) 评论(0)
 

elasticsearch java API------批量添加索引

public void bulkupdate(){   BulkRequestBuilder bulkRequest = client.prepareBulk();    try { bulkRequest.add(client.prepareIndex("productindex", "productindex", "2")         .setSource(XContentFa...
 阅读(272) 评论(0)
 

elasticsearch java API ------搜索

public void scan(){ // QueryBuilder qb = QueryBuilders.termQuery("description", "descript"); SearchResponse scrollResp = client.prepareSearch("productindex")                .setSearchType(Searc...
 阅读(859) 评论(0)
 

elasticsearch java API --------删除索引数据

public void delbyquery(){ QueryBuilder query = QueryBuilders.fieldQuery("type", "1");      client.prepareDeleteByQuery("productindex").setQuery(query).execute().actionGet(); } public void de...
 阅读(187) 评论(0)
 

elasticsearch java API ------索引数据

TransportClient client = null; public ESClientTest() { Settings settings = ImmutableSettings.settingsBuilder() .put("client.transport.sniff", true).build(); client = new TransportClient(settin...
 阅读(325) 评论(0)
 

elasticsearch java API ------定义索引字段属性

TransportClient client = null; public ESClientTest() { Settings settings = ImmutableSettings.settingsBuilder() .put("client.transport.sniff", true).build(); client = new TransportClient(settin...
 阅读(269) 评论(0)
 

分布式搜索elasticsearch配置文件详解

elasticsearch的config文件夹里面有两个配置文件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来记录日志的,所以logging.yml里的设置按普通log4j配置文件来设置就行了。下面主要讲解下elasticsearch.yml这个文件中可配置的东西。 cluster.name: elas...
 阅读(240) 评论(0)
 

分布式搜索elasticsearch几个概念解析

分布式搜索elasticsearch几个概念解析...
 阅读(152) 评论(0)
 

分布式搜索elasticsearch单机与服务器环境搭建

先到http://www.elasticsearch.org/download/下载最新版的elasticsearch运行包,本文写时最新的是0.19.1,作者是个很勤快的人,es的更新很频繁,bug修复得很快。下载完解开有三个包:bin是运行的脚本,config是设置文件,lib是放依赖的包。如果你要装插件的话就要多新建一个plugins的文件夹,把插件放到这个文件夹中。 1.单机环境...
 阅读(193) 评论(0)
 

elasticsearch java API------与集群交互

这是关于elasticsearch java api的第一篇教程,陆续会把es的一些心得写出来。 可以通过两种方式来连接到elasticsearch(简称es)集群,第一种是通过在你的程序中创建一个嵌入es节点(Node),使之成为es集群的一部分,然后通过这个节点来与es集群通信。第二种方式是用TransportClient这个接口和es集群通信。 Node方式 创建嵌入节点的...