当前在线人数:1 登录
云端分布式搜索技术 关注云端搜索技术:elasticsearch,nutch,hadoop,nosql,mongodb,hbase,cassandra

elasticsearch1.7.3升级到2.1.1记录

升级手册直接参考官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/restart-upgrade.html

升级前可以看下有啥改动:https://www.elastic.co/guide/en/elasticsearch/reference/master/breaking-changes-2.0.html
 

elasticsearch2.0对索引操作的一些优化

es2.0已经发布了,改进挺大的,对索引方面的优化的也挺多的。持久化速率自动化

2.0之前es对于索引持久化到硬盘的速率默认是20mb一秒,这个值有时候会太小从而导致写入速度过慢从而影响索引速度。2.0对其进行了速率自动化的改进。当merge操作太慢时,会自动提高速率。当merge操作跟上来时再降低速率。这样会使突然间进行的大merge不至于占用整个节点的io从而影响到搜索和索引操作。

linux命令行elasticsearch查询工具es2unix

当想在linux的命令行中查看elasticsearch的状态时,可以用es2unix这个工具,插件地址: https://github.com/elasticsearch/es2unix。它是elasticsearch官方推出的,可以通过命令来查看es的各种状态,安装方法

solr4.3索引分片拆分实现原理

solr4.3版本出了,支持分片拆分功能,就是可以把一个分片切分成两个小分片。比如shard1,切分后就变成shard1_0和shard1_1,以后对shard1的索引和搜索操作会路由到这两个分片。

大致步骤如下:
1.在shard1所在节点新增两个core,覆盖新的哈希范围(solr是通过哈希范围来决定数据存放在那个分片,和一致性哈希有点类似)
2.这两个core进入维护模式

elasticsearch更改node id生成方法

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

elasticsearch手动控制分片分布

elasticsearch可以通过reroute api来手动进行索引分片的分配。

不过要想完全手动,必须先把cluster.routing.allocation.disable_allocation参数设置为true,禁止es进行自动索引分片分配,否则你从一节点把分片移到另外一个节点,那么另外一个节点的一个分片又会移到那个节点。

elasticsearch使用jetty进行简单的权限控制

默认elasticsearch是使用netty作为http的容器,由于netty并没有权限模块,所以默认es没有任何的权限控制,直接通过http就可以进行任何操作,除非把http禁用。但如果你使用elasticsearch-jetty插件,就可以使用jetty自带的权限管理进行一些权限的控制,同时也可以支持通过https协议来访问es,还有就是支持gzip压缩响应信息。

elasticsearch插件大全(不断更新)

Elasticsearch扩展性非常好,有很多官方和第三方开发的插件,下面以分词、同步、数据传输、脚本支持、站点、其它这几个类别进行划分。

elasticsearch客户端大全(不断更新)

Elasticsearch有各种语言的客户端,下面一一列出来

nutch2.1+mysql+elasticsearch整合linux单机部署

这次主要介绍下nutch2.1和mysql和elasticsearch的整合,是在单机上运行,并不是分布式部署。
1、下载nutch2.1 2、配置nutch使用mysql作为数据存储  3、修改conf的nutch-site.xml 
4、使用ant编译源码。 5、设置待抓取的网站 6、创建数据库和表 7、执行爬行操作
8、执行索引操作

GitHub使用elasticsearch遇到的一些问题及解决方法

GitHub 此前的搜索使用Solr实现,新上线的搜索基于elasticsearch,运行在多个集群上。由于代码搜索索引很大,GitHub专门为其指定了一个集 群。目前该集群包括26个存储节点和8个客户端节点。存储节点负责保存构成搜索索引的数据,而客户端节点负责协调查询活动。每个搜索节点中有2TB的 SSD存储。

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

Github
“Github使用Elasticsearch搜索20TB的数据,包括13亿的文件和1300亿行的代码”

 

这个不用介绍了吧,码农们都懂的,Github在2013年1月升级了他们的代码搜索,由solr转为elasticsearch,目前集群规模为26个索引存储节点和8个客户端节点(负责处理搜索请求),详情请看官方博客

分布式搜索elasticsearch的5种分片查询优先级

elasticsearch可以使用preference参数来指定分片查询的优先级,使用时就是在请求url上加上preference参数,如:http://ip:host/index/_search?preference=_primary
java的调用接口翻译为:client.prepareSearch("index").setPreference("_primary")。默认情况下es有5种查询优先级:

Elasticsearch Java虚拟机配置详解(转)

引言:

今天,事情终于发生了。Java6(Mustang),是2006年早些时候出来的,至今仍然应用在众多生产环境中,现在终于走到了尽头。已经没有什么理由阻止迁移到Java7(Dolphin)上了。

这也促使我想写一篇关于在ElasticSearch上配置Java6和7的细微差异的博文。

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

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

分布式搜索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.fdt")

这是由lucene的索引损坏了导致的,引起的原因有很多种,比如:复制不完整,硬盘损坏等。

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

1.由gc引起节点脱离集群

  因为gc时会使jvm停止工作,如果某个节点gc时间过长,master ping3次(zen discovery默认ping失败重试3次)不通后就会把该节点剔除出集群,从而导致索引进行重新分配。解决方法:

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

elasticsearch使用google开源的依赖注入框架guice,这个项目号称比spring快100倍,具体性能没有测试过,不过由于其代码比较简洁,比spring快很有可能,是不是快那么多就不知道了。先介绍下guice的基本使用方法。

分布式搜索elasticsearch高级配置之(二)------线程池设置

一个Elasticsearch节点会有多个线程池,但重要的是下面四个:
索引(index):主要是索引数据和删除数据操作(默认是cached类型)

分布式搜索elasticsearch java API 之(八)------使用More like this实现基于内容的推荐

基于内容的推荐通常是给定一篇文档信息,然后给用户推荐与该文档相识的文档。Lucene的api中有实现查询文章相似度的接口,叫MoreLikeThis。Elasticsearch封装了该接口,通过Elasticsearch的More like this查询接口,我们可以非常方便的实现基于内容的推荐。