- 博客(79)
- 资源 (1)
- 收藏
- 关注
原创 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
2016-02-04 11:32:46
4714
1
原创 elasticsearch2.0对索引操作的一些优化
es2.0已经发布了,改进挺大的,对索引方面的优化的也挺多的。持久化速率自动化2.0之前es对于索引持久化到硬盘的速率默认是20mb一秒,这个值有时候会太小从而导致写入速度过慢从而影响索引速度。2.0对其进行了速率自动化的改进。当merge操作太慢时,会自动提高速率。当merge操作跟上来时再降低速率。这样会使突然间进行的大merge不至于占用整个节点的io从而影响到搜索和索引操作。
2015-12-24 20:46:42
3758
原创 一些国外优秀的elasticsearch使用案例
Github“Github使用Elasticsearch搜索20TB的数据,包括13亿的文件和1300亿行的代码”这个不用介绍了吧,码农们都懂的,Github在2013年1月升级了他们的代码搜索,由solr转为elasticsearch,目前集群规模为26个索引存储节点和8个客户端节点(负责处理搜索请求),详情请看官方博客https://github.com/blog/1381
2013-03-28 19:26:25
16907
25
转载 Elasticsearch Java虚拟机配置详解(转)
引言:今天,事情终于发生了。Java6(Mustang),是2006年早些时候出来的,至今仍然应用在众多生产环境中,现在终于走到了尽头。已经没有什么理由阻止迁移到Java7(Dolphin)上了。这也促使我想写一篇关于在ElasticSearch上配置Java6和7的细微差异的博文。Elasticsearch对Java虚拟机进行了预先的配置。通常情况下,因为这些配置的选择还
2013-01-03 20:52:09
6729
原创 分布式搜索Elasticsearch源码分析之二------索引过程源码概要分析
elasticsearch的索引逻辑简单分析,这里只是理清主要的脉络,一些细节方面以后的文章或会阐述。假如通过java api来调用es的索引接口,先是构造成一个json串(es里表示为XContent,是对要处理的内容进行抽象),在IndexRequest里面指定要索引文档到那个索引库(index)、其类型(type)还有文档的id,如果没有指定文档的id,es会通过UUID工具自动
2012-12-29 13:56:17
13672
14
原创 分布式搜索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
2012-12-14 19:54:20
11690
9
原创 分布式搜索elasticsearch集群监控工具bigdesk
bigdesk是elasticsearch的一个集群监控工具,可以通过它来查看es集群的各种状态,如:cpu、内存使用情况,索引数据、搜索情况,http连接数等。项目git地址: https://github.com/lukas-vlcek/bigdesk。和head一样,它也是个独立的网页程序,使用方式和head一样。插件安装运行:1.bin/plugin -install lukas-
2012-11-21 14:43:09
19777
23
原创 分布式搜索elasticsearch集群管理工具head
elasticsearch-head是一个elasticsearch的集群管理工具,它是完全由html5编写的独立网页程序,你可以通过插件把它集成到es。或直接下载源码,在本地打开index.html运行它。该工具的git地址是: https://github.com/Aconex/elasticsearch-head插件安装方法:1.elasticsearch/bin/plu
2012-11-17 14:38:41
29422
2
原创 生产环境使用elasticsearch遇到的一些问题以及解决方法(不断更新)
1.由gc引起节点脱离集群 因为gc时会使jvm停止工作,如果某个节点gc时间过长,master ping3次(zen discovery默认ping失败重试3次)不通后就会把该节点剔除出集群,从而导致索引进行重新分配。解决方法:(1)优化gc,减少gc时间。(2)调大zen discovery的重试次数(es参数:ping_retries)和超时时间(es参数:ping_ti
2012-11-17 02:23:12
72121
55
原创 Elasticsearch源码分析之一——使用Guice进行依赖注入与模块化系统
elasticsearch使用google开源的依赖注入框架guice,这个项目号称比spring快100倍,具体性能没有测试过,不过由于其代码比较简洁,比spring快很有可能,是不是快那么多就不知道了。先介绍下guice的基本使用方法。elasticsearch是直接把guice的源码放到自己的包内(es把很多开源项目的代码都直接集成到自己项目中,省得依赖一堆的jar包,也使es的jar包
2012-09-19 19:50:15
11090
10
原创 分布式搜索elasticsearch高级配置之(二)------线程池设置
一个Elasticsearch节点会有多个线程池,但重要的是下面四个:索引(index):主要是索引数据和删除数据操作(默认是cached类型)搜索(search):主要是获取,统计和搜索操作(默认是cached类型)批量操作(bulk):主要是对索引的批量操作(默认是cached类型)更新(refresh):主要是更新操作(默认是cached类型)可以通过给设置一个参数来
2012-09-04 20:14:01
11544
2
原创 分布式搜索elasticsearch java API 之(八)------使用More like this实现基于内容的推荐
基于内容的推荐通常是给定一篇文档信息,然后给用户推荐与该文档相识的文档。Lucene的api中有实现查询文章相似度的接口,叫MoreLikeThis。Elasticsearch封装了该接口,通过Elasticsearch的More like this查询接口,我们可以非常方便的实现基于内容的推荐。先看一个查询请求的json例子:{ "more_like_this" : {
2012-08-28 20:37:06
14672
7
原创 cas+shiro在谷歌浏览器下的离奇跳转
cas+shiro配置好后,在本地测试环境(jetty服务器)三大浏览器测试都没问题,但部署到线上时,谷歌浏览器在cas登陆成功跳转回shiro的回调地址时重定向到了favicon.ico这个地址,由于后台并没有这个地址,所以服务器出了个404页面。那shiro为什么会从定向到这个地址呢?百思不得其解,后来查资料才知道favicon.ico是网站的图标,浏览器请求网站时也会请求这个图标。但为什么刚
2012-08-27 09:07:33
5816
1
原创 cas ajax登录方式跨域时session丢失问题解决
问题:在ie浏览器下,域名A通过iframe的方式把登录信息post到域名为B的cas服务器上,经过debug发现A获取loginTicket时的sessionId和post过去时的sessionid不一致。只有ie浏览器有这个问题,火狐谷歌浏览器正常。原因:查资料知道IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) sp
2012-08-18 10:09:55
6841
2
原创 分布式搜索elasticsearch高级配置之(一)------分片分布规则设置
分片分布是把索引分片分布到节点的过程。这个操作会在初次启动集群,副本分配,负载均衡,或增加删除节点时进行。下面是一些与分片分布相关的设置:cluster.routing.allocation.allow_rebalance设置根据集群中机器的状态来重新分配分片,可以设置为always, indices_primaries_active和indices_all_active,默认是设
2012-07-29 22:21:02
13620
6
原创 分布式搜索elasticsearch中文分词集成
elasticsearch官方只提供smartcn这个中文分词插件,效果不是很好,好在国内有medcl大神(国内最早研究es的人之一)写的两个中文分词插件,一个是ik的,一个是mmseg的,下面分别介绍下两者的用法,其实都差不多的,先安装插件,命令行:安装ik插件:plugin -install medcl/elasticsearch-analysis-ik/1.1.0下载ik相关配置
2012-07-27 12:36:36
26230
35
原创 nutch2.0+cassandra中文网页乱码问题
用nutch2.0+cassandra1.0爬取和存储网页时发现gbk编码的网页解析提取文本时中文全都变成乱码,非常奇怪,之前nutch1.x从来就不会出现中文乱码的问题的,因为nutch1.x和nutch2.x用的爬虫代码差不多是一样的,所以我猜可能是保存到cassandra时有问题。看了下它保存网页到cassandra的源码,所有需要保存的值它都转换成二进制封装成ByteBuffer对象传到g
2012-07-24 21:19:10
4012
6
原创 分布式搜索elasticsearch java API 之(七)------与MongoDB同步数据
elasticsearch提供river这个模块来读取数据源中的数据到es中,es官方有提供couchDB的同步插件,因为项目用到的是mongodb,所以在找mongodb方面的同步插件,在git上找到了elasticsearch-river-mongodb。 这个插件最初是由aparo写的,最开始的功能就是读取mongodb里面的表,记录最后一条数据的id,根据时间间隔不断访问m
2012-06-26 21:25:19
14959
41
原创 centos下配置tomcat7的apr高级模式和ssl证书
我这里用的是startssl提供的免费证书,startssl证书的申请可以参考下面链接:http://www.setsea.net/wordpress/post/2011/04/21/881.html申请完后你会有一下三个文件,ssl.crt(公钥),ssl.key(密钥),ssl.p12(PKCS12格式的证书)运行以下命令查看证书信息:$ keytool -list -rfc -k
2012-06-06 19:55:47
4286
原创 linux下tomcat7配置startssl证书遇到的问题总结
申请完证书,配置到tomcat(windwos下)启动时报错Connector attribute SSLCertificateFile must be defined when using SSL with APR通过查看tomcat7/webapps/docs/apr.html文件,添加了SSLCertificateFile和SSLCertificateKeyFile两个参数的设置
2012-06-06 11:54:31
4189
原创 eclipse中调试nutch2.0+cassandra
很早官方就开始了nutch2.0的研发,而一直都是两线同时研发的,一个是普通版,一个是gora版本,也就是nutch2.0。下面介绍下怎样把项目导进eclipse中,这里我们的存储层使用nosql cassandra,本来想先使用mysql试试,发现启动不了爬虫,调试下发现原来还没有完全实现gora的sql数据库的存储功能,所以选择易用的cassandra作为测试。需要知识:nutch基本知识
2012-06-03 08:36:12
6594
31
原创 分布式爬虫nutch2.0初体验------三大亮点
实在是等不及了,下了开发版的nutch2.0来玩玩,nutch2.0有什么不同呢?从官网wiki(见参考资料)可看到,主要是以下几个方面:1.抽象存储层 把存储层抽象出来,不仅像之前那样可以存放在hdfs上,也可以存在其它nosql中,如:hbase,cassandra,或关系数据库。2.精简插件 之前是差不多是一种文件使用一个插件来进行解析,现在主要是使用
2012-06-02 19:10:22
7772
4
原创 分布式搜索elasticsearch java API 之(六)------批量添加删除索引
elasticsearch支持批量添加或删除索引文档,java api里面就是通过构造BulkRequestBuilder,然后把批量的index/delete请求添加到BulkRequestBuilder里面,执行BulkRequestBuilder。下面是个例子:import static org.elasticsearch.common.xcontent.XContentFactory.
2012-05-27 10:08:24
16474
31
原创 分布式搜索elasticsearch java API 之(五)------搜索
elasticsearch的查询是通过执行json格式的查询条件,在java api中就是构造QueryBuilder对象,elasticsearch完全支持queryDSL风格的查询方式,QueryBuilder的构建类是QueryBuilders,filter的构建类是FilterBuilders。下面是构造QueryBuilder的例子: import static org.elasti
2012-05-27 09:49:20
26059
61
原创 cas集成oauth,用新浪微博账号登录示例
cas官方已经在开发cas与oauth集成的插件,使用的是scribe-up这个项目来获取授权后的用户基本信息。计划在cas3.5.0版本时推出,不过现在已经可以用了,下面将以新浪微博为例,说明如何用新浪微博的账号登录cas,到https://github.com/Jasig/cas/tree/master/cas-server-support-oauth下载源码,把cas-server-supp
2012-05-15 09:57:32
17367
50
原创 mongodb保存java对象的三种方法
mongodb有三种方法来保存java对象,一种是通过类实现DBObject接口,一种是利用spring-mongodb工具的对象映射功能,把java对象转换成mongodb的BSON文档,一种是通过序列化类实例,转成二进制存储,mongodb是支持二进制的数据格式的。下面分别介绍三种方法:1.实现DBObject接口用这种方法的话类还是个DBObject,存取对象属性都要用到put和ge
2012-05-12 10:40:42
17506
2
原创 eclipse快捷键插件Shortcuts,提高开发速度
所谓“工欲善其事必先利其器”,一个好的开发工具能使开发效率得到很好的提高,在网上无意中发现了shortcuts这个eclipse插件,提供了各种eclipse功能的快捷键,核心是个快捷输入窗口,通过这个快捷输入窗口可以创建项目,类,是不是很方便?下面介绍下它的功能,先到http://code.google.com/p/shortcuts-plugin/downloads/detail?name=s
2012-05-08 08:58:12
4597
原创 CAS通过用户名与ip限制密码输入错误次数
之前自己通过修改源码实现了以用户名为单位限制其密码输入次数,但这样做不是很合理,如果是同一ip不同用户名呢?于是就想把也通过ip限制的功能加上。今天无意逛官网时竟然发现CAS里面有类似的功能,可以通过用户名或ip来做登录限制。没有仔细查看文档的结果就是做了一点无用功。下面介绍下开启cas限制密码输入次数的功能。有两种方法:一是把状态保存到内存中,二是通过Inspektr来管理。下面主要介绍保存到内
2012-04-23 14:22:44
8068
5
原创 分布式搜索elasticsearch java API 之(四)------删除索引数据
删除api允许从特定索引通过id删除json文档。有两种方法,一是通过id删除,二是通过一个Query查询条件删除,符合这些条件的数据都会被删除。一、通过id删除下面的例子是删除索引名为twitter,类型为tweet,id为1的文档:DeleteResponse response = client.prepareDelete("twitter", "tweet", "1")
2012-04-14 14:50:41
22064
4
原创 分布式搜索elasticsearch java API 之(三)------索引数据
es索引数据非常方便,只需构建个json格式的数据提交到es就行,下面是个java api的例子 XContentBuilder doc = jsonBuilder() .startObject() .field("title", "this is a title!") .fiel
2012-04-14 14:21:27
18765
28
原创 分布式搜索elasticsearch java API 之(二)------put Mapping定义索引字段属性
Mapping,就是对索引库中索引的字段名及其数据类型进行定义,类似于关系数据库中表建立时要定义字段名及其数据类型那样,不过es的mapping比数据库灵活很多,它可以动态添加字段。一般不需要要指定mapping都可以,因为es会自动根据数据格式定义它的类型,如果你需要对某些字段添加特殊属性(如:定义使用其它分词器、是否分词、是否存储等),就必须手动添加mapping。有两种添加mapping的方
2012-04-14 13:53:39
22839
53
原创 分布式搜索elasticsearch配置文件详解
elasticsearch的config文件夹里面有两个配置文件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来记录日志的,所以logging.yml里的设置按普通log4j配置文件来设置就行了。下面主要讲解下elasticsearch.yml这个文件中可配置的东西。cluster.name: elasti
2012-04-02 10:26:57
26931
24
原创 分布式搜索elasticsearch几个概念解析
介绍下es的几个概念:cluster 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。shards 代表索引分片,es可以
2012-04-02 02:16:59
22790
21
原创 分布式搜索elasticsearch单机与服务器环境搭建
先到http://www.elasticsearch.org/download/下载最新版的elasticsearch运行包,本文写时最新的是0.19.1,作者是个很勤快的人,es的更新很频繁,bug修复得很快。下载完解开有三个包:bin是运行的脚本,config是设置文件,lib是放依赖的包。如果你要装插件的话就要多新建一个plugins的文件夹,把插件放到这个文件夹中。1.单机环境:
2012-03-31 14:20:57
16505
11
原创 Mongodb与spring集成(4)------读写mongo GridFs中的文件
mongodb里面自带有一个分布式文件系统gridFs,它是以块的方式来存储文件的,一般的存储都够用了,国内一个使用例子是视觉中国使用它来进行上亿数据级的图片存储,可以看出这套文件系统还是挺强大的。下面介绍下如何用spring-data-mongodb来对其进行操作,其实spring-data-mongodb并没有对gridfs进行再次封装,我们只能自己根据需要简单封装下接口,mongodb ja
2012-03-31 10:20:28
7300
1
原创 分布式搜索elasticsearch java API 之(一)------与集群交互
这是关于elasticsearch java api的第一篇教程,陆续会把es的一些心得写出来。可以通过两种方式来连接到elasticsearch(简称es)集群,第一种是通过在你的程序中创建一个嵌入es节点(Node),使之成为es集群的一部分,然后通过这个节点来与es集群通信。第二种方式是用TransportClient这个接口和es集群通信。Node方式创建嵌入节点的方式如下:
2012-03-30 21:01:18
21407
26
原创 分布式搜索方案选型之四:Solr+Katta
一个叫katta的开源项目进入我的视线,它是一个分布式索引建立和管理工具,底层是hadoop的hdfs分布式文件系统,hadoop是当今云计算的热门使用项目,由apatch开源是一个海量数据的处理和存储方案,它的主要核心就是它的hdfs分布式文件存储系统和mapreduce算法,它们分别是google论文中的gfs和mapreduce的开源实现。目前大公司的云计算平台基本上都是基于它来搭建的。因为
2012-03-14 21:33:04
7928
4
原创 分布式搜索方案选型之三:SolrCloud
逛solr官网时无意发现了solrCloud这个开源项目,即solr云或叫分布式solr。它是基于solr的,使用zookeeper作为节点之间通信管理,它具有solr的所有特征,并提供索引分片的功能,不过这是要自己在配置文件中配置分片信息的。它好的地方是它是个实时的搜索引擎,即将推出的lucene4.0将实现实时搜索,而solrCloud就是基于开发中的lucene4.0的,目前solrClou
2012-03-14 21:31:01
6237
4
原创 分布式搜索方案选型之二:Solandra
我在学校项目实践时使用过solandra,它是一个基于solr和nosql数据库cassandra的分布式搜索引擎。cassandra是由facebook开源的nosql数据库,facebook的信箱搜索就是基于它实现的,它是基于列结构的,不同与关系数据库。它的数学模型基于google的bigtable和Amazon的Dynamo,它的一个重要特性是没有对外没有中心节点,所以不会存在单点故障的问题
2012-03-14 21:28:06
7455
1
原创 分布式搜索方案选型之一:Solr
我第一个了解到的分布式搜索框架是solr,它是由java开发的,基于lucene的分布式搜索引擎,提供了类似于webserver的编程接口,是一个比较成熟的搜索引擎,目前很多公司都在使用。很快我就部署了一个由4台机器组成的solr集群,开始导公司的数据进去测试,导的数据为200万。导入速度非常快。接下来就开始测试查询效率,发现它是有缓存的,第一次查询的时间基本上在80~150毫秒之间,第二次查由于
2012-03-14 21:24:43
5763
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人