光速读懂ElasticSearch

  1. ElasticSearch的入门及了解

ElasticSearch简称为ES,其诞生为了解决原生Lucene使用的不足,优化Lucene的调用方式,并实现了高可用的分布式集群的搜索方案.
虽然ES是为了解决lucene的不足,但是其核心并不在于lucene;
ES的体现更多的是在于:
1. 分布式的实时文件存储,每个字段都被索引并可被搜索
2.分布式的实时分析搜索引擎
3.可以扩展到上百台服务器,处理PB级结构化或非结构化数据
4.高度集成化的服务,你的应用可以通过简单的 RESTful API、各种语言的客户端甚至命令行与之交互。
5.上手Elasticsearch非常容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它拥有开瓶即饮的效果(安装即可使用),只需很少的学习既可在生产环境中使用。
ES的使用是广泛的:
其中典型的使用案例有:
①Github使用Elasticsearch搜索20TB的数据,包括13亿的文件和1300亿行的代码.
②Foursquare实时搜索5千万地点信息?Foursquare每天都用Elasticsearch做这样的事.
③德国SoundCloud使用Elasticsearch来为1.8亿用户提供即时精准的音乐搜索服务.
④Mozilla公司以火狐著名,它目前使用 WarOnOrange 这个项目来进行单元或功能测试,测试的结果以 json的方式索引到elasticsearch中,开发人员可以非常方便的查找 bug.
⑤Sony公司使用elasticsearch 作为信息搜索引擎.
ES也是一中框架,对其类似的框架还有:
① Solr(重量级对手)
Apache Lucene项目的开源企业搜索平台。其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。Solr是高度可扩展的,并提供了分布式搜索和索引复制。Solr是最流行的企业级搜索引擎,Solr4 还增加了NoSQL支持。
Solr和ES比较:
Solr 利用 Zookeeper 进行分布式管理,支持更多格式的数据(HTML/PDF/CSV),官方提供的功能更多在传统的搜索应用中表现好于 ES,但实时搜索效率低。
ES自身带有分布式协调管理功能,但仅支持json文件格式,本身更注重于核心功能,高级功能多有第三方插件提供,在处理实时搜索应用时效率明显高于 ES。
② Katta
基于 Lucene 的,支持分布式,可扩展,具有容错功能,准实时的搜索方案。
优点:开箱即用,可以与 Hadoop 配合实现分布式。具备扩展和容错机制。
缺点:只是搜索方案,建索引部分还是需要自己实现。在搜索功能上,只实现了最基本的需求。成功案例较少,项目的成熟度稍微差一些。
③ HadoopContrib
Map/Reduce 模式的,分布式建索引方案,可以跟 Katta 配合使用。
优点:分布式建索引,具备可扩展性。
缺点:只是建索引方案,不包括搜索实现。工作在批处理模式,对实时搜索的支持不佳。

  1. ElasticSearch的安装及使用

在上述中对ElasticSearch介绍了如此之多,下面正式进入激动的安装及使用环节
ES的安装比较简单,只需要官方下载ES的运行包,然后启动ES服务即可。
ES的使用主要是通过能够发起HTTP请求的终端来接入,比如Poster插件、CURL、kibana5等。
安装ES
ES服务只依赖于JDK,推荐使用JDK1.7+。
① 下载ES安装包
官方下载地址:

https://www.elastic.co/downloads/elasticsearch

② 运行ES
bin/elasticsearch.bat
③ 验证
访问:http://localhost:9200/
看到显示的代码信息,恭喜你,你的ES集群已经启动并且正常运行.

  • ElasticSearch的数据管理
    ES使用Javascript对象符号(JavaScript Object Notation),也就是JSON,作为文档序列化格式。JSON现在已经被大多语言所支持,而且已经成为NoSQL领域的标准格式。
    ES存储的一个员工文档的格式示例:
    {
    _index : “crm”,
    _type : “user”,
    _id : 1,
    _source : {
    “email”: "nxh@itsource.cn",
    “name”: “倪先华”,
    “info”: {
    “addr”: “四川省成都市”,
    “age”: 30,
    “interests”: [ “美食”, “美女” ]
    },
    “join_date”: “2016-06-01”
    }
    }
    _index:索引库,类似于关系型数据库里的“数据库”—它是我们存储和索引关联数据的地方。
    _type:在应用中,我们使用对象表示一些“事物”,例如一个用户、一篇博客、一个评论,或者一封邮件。可以是大写或小写,不能包含下划线或逗号。我们将使用 employee 做为类型名。
    _id:与 _index 和 _type 组合时,就可以在ELasticsearch中唯一标识一个文档。当创建一个文档,你可以自定义 _id ,也可以让Elasticsearch帮你自动生成。
    另外还包括:_uid文档唯一标识(_type#_id)
    _source:文档原始数据
    _all:所有字段的连接字符串
  • 对ElasticSearch的简单CRUD:

①使用自己的ID创建:
PUT {index}/{type}/{id}
{
“field”: “value”,

}
②ES内置ID创建:
POST {index}/{type}/
{
“field”: “value”,

}
①②ES响应内容:
{
“_index”: “itsource”,
“_type”: “employee”,
“_id”: xxxxxx,
“_version”: 1, //文档版本号
“created”: true //是否新增
}

③ 获取指定ID的文档
GET itsource/employee/123?pretty
③返回的内容:
{
“_index” : “itsource”,
“_type” : “employee”,
“_id” : “123”,
“_version” : 1,
“found” : true,
“_source” : {
“email”: "nxh@itsource.cn",
“fullName”: “倪先华”,

“joine_date”: “2016-06-01”
}
}

  • 返回文档的部分字段

GET默认返回整个文档,通过GET /itsource/employee/123?_source=fullName,email
只返回文档内容,不要元数据:
GET itsource/employee/123/_source

  • 局部更新文档

接受一个局部文档参数 doc,它会合并到现有文档中,对象合并在一起,存在的标量字段被覆盖,新字段被添加。
POST itsource/employee/123/_update
{
“doc” : {
“email” : "nixianhua@itsource.cn",
“salary”: 1000
}
}

  • 注意点

在使用的过程中Elasticsearch遵循一定的过程,这个过程如下:

  1. 从旧文档中检索JSON
  2. 修改它
  3. 删除旧文档
  4. 索引新文档

脚本更新文档
也可以通过使用简单的脚本来进行。这个例子使用一个脚本将age加5:
POST itsource/emploee/123/_update
{
“script” : “ctx._source.age += 5”
}
删除文档
DELETE {index}/{type}/{id}

批量操作bulk API
使用单一请求来实现多个文档的create、index、update 或 delete。
例如:
POST _bulk
{ “delete”: { “_index”: “itsource”, “_type”: “employee”, “_id”: “123” }}
{ “create”: { “_index”: “itsource”, “_type”: “blog”, “_id”: “123” }}
{ “title”: “我发布的博客” }
{ “index”: { “_index”: “itsource”, “_type”: “blog” }}
{ “title”: “我的第二博客” }

  • 对于Elasticsearch的接单查询

mget API参数是一个 docs数组,数组的每个节点定义一个文档的 _index 、 _type 、 _id 元数据。如果你只想检索一个或几个确定的字段,也可以定义一个 _source 参数:
方式1:GET _mget
{
“docs” : [
{
“_index” : “itsource”,
“_type” : “blog”,
“_id” : 2
},
{
“_index” : “itsource”,
“_type” : “employee”,
“_id” : 1,
“_source”: [“name”,“age”]
}
]
}
方式2:同一个索引库的同一个类型下
GET itsource/blog/_mget
{
“ids” : [ “2”, “1” ]
}

由于作者本人能力有限对于ElasticSearch的介绍到处结束,如有不足之处,欢迎您提出宝贵的意见与作者共同探讨

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值