write down,forget
adidas eqt support ultra primeknit vintage white coming soon adidas eqt support ultra boost primeknit adidas eqt support ultra pk vintage white available now adidas eqt support ultra primeknit vintage white sz adidas eqt support ultra boost primeknit adidas eqt adv support primeknit adidas eqt support ultra boost turbo red white adidas eqt support ultra boost turbo red white adidas eqt support ultra boost turbo red adidas eqt support ultra whiteturbo adidas eqt support ultra boost off white more images adidas eqt support ultra boost white tactile green adidas eqt support ultra boost beige adidas eqt support ultra boost beige adidas eqt support refined camo drop adidas eqt support refined camo drop adidas eqt support refined running whitecamo adidas eqt support 93 primeknit og colorway ba7506 adidas eqt running support 93 adidas eqt support 93
标签 Tag : DIE

[翻译]Diving Into ElasticSearch(7)模块配置介绍:cluster

<Category: Diving Into ElasticSearch> Comments Off on [翻译]Diving Into ElasticSearch(7)模块配置介绍:cluster

纯翻译:http://www.elasticsearch.org/guide/reference/modules/cluster.html
貌似国内最近关注elasticsearch的人多了起来。
阅读这篇文章的其余部分 »

本文来自: [翻译]Diving Into ElasticSearch(7)模块配置介绍:cluster

Diving Into ElasticSearch (6) 配置文件elasticsearch.yml

<Category: Diving Into ElasticSearch> Comments Off on Diving Into ElasticSearch (6) 配置文件elasticsearch.yml

接前面那篇吧[5],ElasticSearch分布式架构要说清楚真不是那么容易,我那就从细节一点点的切入吧。

先看看配置文件吧:elasticsearch.yml

配置文件elasticsearch.yml的可配项比较多,并且修改之后需要重启服务才能生效。

本文来自: Diving Into ElasticSearch (6) 配置文件elasticsearch.yml

Diving Into ElasticSearch (5) 分布式架构

<Category: Diving Into ElasticSearch> 3 条评论

今天介绍下ElasticSearch的分布式架构,如果你熟悉cassandra、hadoop、mongodb,你会发现ElasticSearch里面有很多他们的影子,没错,ElasticSearch吸收了目前主流的分布式系统的很多特性,下面简单介绍一把。

之前翻译过一篇[译]搜索引擎与时间机器,里面介绍了下作者在设计ElasticSearch的一些想法,现在看起来还是记忆犹新,因为他的这种思路实在是非常新颖,比如ES里面的将数据分为工作数据和持久化数据两种:

工作数据就是正常的提供查询和索引的数据,这部分数据假定是瞬时的,并且是不可靠的,随时可能丢失的数据,而持久化数据则是可靠的,一致的数据,工作数据可以都放在内存中,这样可以保证非常好的性能,而持久化数据则专心保证数据的一致性就ok了,我们自动的分布式系统有CAP原则,通过对数据分离方式,我们很好的解决了C和A的问题,你可能会问,你内存中的数据如果不对了怎么办?不就会影响数据的一致性吗?一方面数据可以从持久化数据进行加载,另外ES节点间的数据会定时刷新和同步,最终确保数据的一致,就算万一机器都歇了,没关系,从持久化目录里面重新加载数据即可。

单前面说的那个还不算什么,如果不能很好的解决动态扩容的问题,那就不算是ElasticSearch了,在ElasticSearch里面,索引目录有如下两个概念:shard(碎片)、replica(副本)

碎片(shard)的意思很好理解,db可以有sharding,索引也可以做嘛,单个索引目录太大,GB级别的索引文件,你再继续往里塞数据,文件合并,优化,有过这种经验的人应该会明白这种痛苦,怎么办?拆呗(china?拆那?),一般的做法是按数据拆,自己按租户,按时间拆等等,很是麻烦,并且拆完了之后的事情也不少,跨目录查询怎么办?更新怎么办?接口要怎么变?这些在ElasticSearch里面都帮你想到了,对你而言,全是透明的,你操作的就是一个索引,你在创建索引的时候,根据索引的规模指定碎片的大小,其他的你就不用管了,至于它里面怎么实现数据的平均分配,其实很简单,就用了一个取模的算法,随机分配到各个碎片中,至于一致性哈希之类的,目前来说完全没有必要。

碎片可以解决单个索引太大的问题,但是凡任何事有利必有弊,索引碎片在实现上其实就分成了很多个索引目录,索引目录越多,对建索引的速度会有提示,尤其是多线程环境,因为我们建索引的时候单个索引目录肯定加锁,一旦涉及锁,势必要减慢速度,不过我多几个目录,不就可以并发执行了吗?是的,ES就是这么做的,但是前面说了,有利就有弊,索引搞得到处都是,ES查询起来就很费劲了,一般情况下,我们在没有使用Routing的情况下(后面再介绍routing),ES会同时多个线程去读取各个碎片的索引数据,然后再合并查询结果,另外在ES的分布式环境下,碎片如果分布在多台服务器上就要加上网络的开销,势必会影响查询速度了,在海量数据的前提下,这些其实都还好,并且ES支持多种查询方式(reflink:search type):

Query And Fetch:

Query Then Fetch:

Dfs, Query And Fetch:

Dfs, Query Then Fetch:

Count:

Scan:

根据不同的查询需求,选择合适的查询类型,会收到意想不到的效果。

先整体看看单ES节点的模块结构吧:

 

再看看一次索引操作

再看看一次查询请求

本文来自: Diving Into ElasticSearch (5) 分布式架构

Diving Into ElasticSearch (4) 安装配置

<Category: Diving Into ElasticSearch> Comments Off on Diving Into ElasticSearch (4) 安装配置

系列文章拖了几天思路全无,哎,先来个基础的吧。。。【安装配置】

其实ElasticSearch安装没啥好说的,因为ElasticSearch完全是零配置和“拆箱即用”,这对第一次上手ElasticSearch人来说绝对是福音,对于熟悉了ElasticSearch的人来说也可以省却很多多余的操作,总之一个字:帅。

首先,当然是下载,地址如下:http://www.elasticsearch.org/download/
打开网页你可以看到长长的发布的版本号(我应该是从Version 0.5开始我的ES之旅的),ES的版本更新很频繁,作者kimchy根据社区的反馈会不断添加新的feature,bugfix也是神速,在irc里面提出之后,基本上马上就会有修复,实在是给力啊。BTW,现在最新版本又到了0.17.4,前几天又发布了几个版本,修复了一些bug。
阅读这篇文章的其余部分 »

本文来自: Diving Into ElasticSearch (4) 安装配置

Diving Into ElasticSearch (3) 编写自定义分词插件

<Category: Diving Into ElasticSearch> 2 条评论

今天介绍下怎么样编写一个自己的分词插件,开始之前,先介绍下ES的项目结构:

2011-07-13_231544

分别介绍下吧:

.idea:IDEA的项目配置文件

bin:可执行脚本文件

config:配置文件

gradle:精简版的gradle

lib:里面主要放了sigar用来做资源监控

modules:ES主要模块在这里了

plugins:插件都放这里啦

plugins里面按类型分了好多目录,今天我们来看怎么自定义一个分词插件,所以放analysis目录里面。

我们先移植一个开源的IKAnalyzer到ES里面吧。

第一步,先在plugins下建立目录ik

完整路径如下:elasticsearch\plugins\analysis\ik

下面建立src目录和build目录、并建立文件build.gradle(内容从icu里面的build.gradle拷贝出来,然后做相应的调整,如下图所示)

2011-07-14_000407

第二步,新建目录src/main/java/org

第三步,在java下新建配置文件es-plugin.properities,里面一行指定当前插件的入口类(实现ES插件接口的类),如下图所示

2011-07-14_001303

 

第四步,在.idea目录里面,找到modules.xml,将我们自定义的module添加到工程中,注意路径,完了之后,会发现plugin下面的ik目录会变粗,说明该目录已经成为了项目中的一个module了。

2011-07-14_002422

第五步,在.idea/modules目录里面新建插件的配置文件如plugin-analysis-ik.iml,内容有下图所示

2011-07-14_001513

第六步,右键点击项目,选择Open Module Setting

应该会看到ik的模块配置,选中,然后分别设置目录的属性(有排除、源代码、测试三种),设置好之后如下图所示

2011-07-14_000744

第七步,在.idea/modules/里面的elasticsearch-root.iml加上一句,将我们的自定义module添加进去,如下图所示

2011-07-14_002023

最后一步,在elasticsearch根目录的setting.gradle文件里,添加一行来打包ik,如下图所示

2011-07-14_002946

配置的工作基本上到此结束,接着就是实现自己的AnalyzerProvider和AbstractPlugin了,具体代码可以看这里https://github.com/medcl/elasticsearch/commit/21abad12a0096173e8836dd042ca403751ab7ad1,就不一一列举了。

开始试验一下吧,默认bootstrap模式会加载所有插件,所有可以直接使用ik-analysis的插件。

curl –XGET http://localhost:9200/index/_analyze?text=%e8%84%91%e6%ae%8b%e7%89%87%e8%ae%a9%e4%bd%a0%e8%84%91%e6%ae%8b%ef%bc%8c%e7%a5%9e%e5%a5%87%e7%9a%84%e5%b0%8f%e8%8d%af%e4%b8%b8%e5%95%8a&analyzer=ik

通过服务端的日志,可以看到正确加载词库了。

2011-07-14_004324

刚刚分词的结果页出来了,ik正确加载了我自定义的词组“脑残片”,分词的结果也是正确的

2011-07-14_004615

本文来自: Diving Into ElasticSearch (3) 编写自定义分词插件

Diving Into ElasticSearch (2) 开发环境搭建

<Category: Diving Into ElasticSearch> 2 条评论

今天介绍下ElasticSearch开发环境的搭建,ElasticSearch本身就已经够强大了,基本上满足各种要求,但是在中文分词方面,自带的几个分词器还是捉襟见肘,但是,不要急,ElasticSearch系统提供了很灵活的插件机制,你可以很方便的编写自定义的插件(ES自带很多功能也同样是以插件的方式来提供的,如Transport插件、River插件等),好,首先咱们第一步就是搭建好开发环境。

阅读这篇文章的其余部分 »

本文来自: Diving Into ElasticSearch (2) 开发环境搭建

Diving Into ElasticSearch (1) 序

<Category: Diving Into ElasticSearch, 搜索> 4 条评论

You know,For Search~

打算写一系列的关于ElasticSearch的文章,一部分内容来自翻译,一部分来自自己的使用心得和调试过程。
一方面可以系统的整理下相关东西,另外也方便自己快速查找。

希望通过这些文章可以让更多的人来了解ElasticSearch。

Allright,先简单介绍下ElasticSearch吧,ElasticSearch的作者是Shay Banon (kimchy是同一个人哦),另一开源搜索项目Compass的作者,用过compass的人应该都知道,compass能够方便的为ORM框架添加搜索功能(即OSEM),简单配置即可,但是正因为使用简单,反而缺少了灵活性(和Hibernate.Search一样,同样折腾过),另外kimchy以前还是GigaSpaces的分布式专家,在Compass3.0的开发和思考中,作者加入了更多的分布式方面的元素,到最后,作者的开发重心基本上全部转到ElasticSearch上来,于是早期的ElasticSearch除了继承了很多Compass的特性之外还有大量的新的特性,比如就有如下一些显著特性(也是刚开始最吸引我的地方):Json数据格式、RESTful访问接口,Shard+Replica、Auto-Discovery、Zero-Config等,想知道ElasticSearch诞生的前因后果,可以看看作者的这篇博文:http://www.kimchy.org/the_future_of_compass/,总之ElasticSearch就这样诞生了。

相关链接:

ElasticSearch:http://www.elasticsearch.org/

源码Host在Github上:http://github.com/elasticsearch

#elasticsearch @ Freenode

@elasticsearch @Twitter

Google Group http://groups.google.com/a/elasticsearch.com

 

核心特性:

Schema Free & Document Oriented:灵活,

Schema Mapping:精确控制

Multi Tenancy:租户隔离(支持多index、多type,同一index下可以有多个类型,支持同时对多个index和多个type的查询)

Settings:Per-Index配置,动态配置,武装到牙齿

Distributed:分布式、动态伸缩、去中心化

Gateway:多种持久化策略

… …

下面是为本系列文章草拟的一个大纲:

1.安装配置

2.索引及查询

3.QueryDSL

4.Mapping

5.Index Setting

5.Index Template

6.Cluster Health

7.Thrift

9.分词器配置

8.自定义分词插件

9.服务器部署及配置优化

… …

ElasticSearch现在版本0.17,功能丰富强大,后面我再带大家一一领略,另外本大纲也会动态调整更新。

关于ES的介绍,还可以看看我之前作的一个简单PPT:quick intro to elasticsearch
和kimchy在berlinbuzzwords 2011的ppt
The Road to a Distributed, (Near) Real Time, Search Engine

本文来自: Diving Into ElasticSearch (1) 序