Elasticsearch简介

Elasticsearch是一款开源的全文搜索引擎,基于apache lucene。后者只是一款开源搜索引擎库,如果想直接使用lucene,这将非常复杂,而且需要了解大量检索的相关知识。

而elasticsearch使用Lucene作为核心组件,实现了所有索引和搜索的功能。并将复杂的部分隐藏封装,最终以restful api的形式展现到用户面前。同时,他也有以下几个特点

  • 分布式的实时文件存储,每个字段都被索引并可被搜索
  • 分布式的实时分析搜索引擎
  • 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

这些功能可以集成到一个服务里,并最终暴露为restful api,这很符合微服务化开发的特点。因此你可以将elasticsearch集成为你应用中的一个专用搜索服务。为其他客户端提供大数据下的快速检索服务。

接下来将介绍一些elasticsearch的基础知识。

1.面向文档

elasticsearch适合用来存储非结构化数据,例如文档类型数据(就像mongo)。文档类型的数据的特点就是非结构化,且数据的表现力非常丰富,可以具有非常复杂的数据结构。

elasticsearch存储数据的序列化格式为json,这就意味着你可以方便的使用web客户端进行交互,且json也已经基本被所有的编程语言所支持。

2.索引

类似于关系型数据库中的“数据库”的概念,用来存储数据的地方。一个文档数据想要被检索,需要先存储到elasticsearch的索引(index),而我们在关系型数据库中的“索引”(即为特定的数据列增加一个B-树,以加快列检索速度),在elasticsearch中,默认每个文档的每个属性都是被索引了的(加了一个倒排索引) 。

例如,现在插入如下数据:

PUT /megacorp/employee/1
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}
关于put命令的结构:megacorp为索引名称,employee为类型名称,1为文档名称,可以近似理解为,“索引”为数据库,“类型”为数据表,“文档名称”为具有相同表结构的对象中的一个。

执行这个命令时,无需关心这个索引或类型是否存在,elasticsearch会自动完成索引,类型的创建。如果该索引或类型已存在,则会往该类型中插入一条数据。因此命令中的索引名和类型名一定要写正确。

3.其他操作

根据restful api 风格,可以使用标准的http方法(get,post,put,delete)来操作elasticsearch的数据。

4.基本检索

elasticsearch可以直接通过http的get方法来直接检索文档,例如:

GET /megacorp/employee/1

这会返回刚刚我们存储的文档1的结构数据并且会包含一些id等元数据

我们也可以使用'_search',来添加一些简单的条件来查询数据,例如:

GET /megacorp/employee/_search

这将会查询类型employe中的所有数据

GET /megacorp/employee/_search?q=last_name:Smith

使用_query-string查询字符串,这会加入一个查询条件last_name:Smith,多个查询条件可以用+连接

更高级的检索功能将在另一篇文章里详细说明


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值