Elasticsearch 是一个非常强大的搜索引擎。它目前被广泛地使用于各个 IT 公司。Elasticsearch 是由 Elastic 公司创建。它的代码位于 GitHub - elastic/elasticsearch: Free and Open, Distributed, RESTful Search Engine。目前,Elasticsearch 是一个免费及开放(free and open)的项目。同时,Elastic 公司也拥有 Logstash 及 Kibana 开源项目。这个三个项目组合在一起,就形成了 ELK 软件栈。他们三个共同形成了一个强大的生态圈。简单地说,Logstash 负责数据的采集,处理(丰富数据,数据转换等),Kibana 负责数据展示,分析,管理,监督及应用。Elasticsearch 处于最核心的位置,它可以帮我们对数据进行快速地搜索及分析。

事实上 Elasticsearch 的完整栈有如下的几个:

Beats

Elasticsearch

Kibana

Logstash

Beats 是一些轻量级可以允许在客户端服务器中的代理。它并不需要部署到我们的 Elastic 云中。它可以帮我们收集所有需要的事件。如果把 Beats 也纳入到我的架构中,那么 Elastic 的栈可以表述为:

在 Elastic 公司,我们称上面的技术栈为 Elastic Stack。

Elastic Stack 简介及安装

在全世界范围内有非常多的公司在使用 Elastic Stack。它们分布在不同的领域:

你可以在 Elastic 的官方地址找到更多的关于客户的信息。

在今天的这篇文章中,我来简单地介绍一下什么是 Elasticsearch。

Elastic is a Search Company

Elastic 产品生态

Elastic 围绕 Elasticsearch 已经建立了许多成熟的方案。更多详情请参阅我们的官方网站 Free and Open Search: The Creators of Elasticsearch, ELK & Kibana | Elastic。

Elasticsearch

简单地说, Elaaticsearch 是一个分布式的使用 REST 接口的搜索引擎。它的产品可以在Elasticsearch: The Official Distributed Search & Analytics Engine | Elastic 进行下载。Elasticsearch 是一个分布式的基于 REST 接口的为云而设计的搜索引擎,它的功能包括:

Elasticsearch是一个基于 Apache Lucene (TM)的开源搜索引擎。无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。在 1999 年,Doug Cutting 创建了一个叫做 Lucene 的开源项目:

一个完全用 Java 编写的搜索引擎库

截止2005年,是一个顶级的 Apache 开源项目

提供强大的全文搜索功能

但是,Lucene 只是一个库。Lucene 本身并不提供高可用性及分布式部署。想要发挥其强大的作用,你需使用 Java 并要将其集成到你的应用中。Lucene 非常复杂,你需要深入的了解检索相关知识来理解它是如何工作的。

在 2004 年, Shay Banon,也就是现在 Elastic 的 CEO,开发了一个叫做 Compass 的开源项目:

构建于 Lucence 之上

目的是使得 Lucene 搜索更容易集成到 Java 应用中去

可扩展性变得尤为重要

在 2010 年,Shay 完全重新编写了 Compass 以实现如下的两个目的:

从一开始设计之初,分布式部署贯穿整个设计

可方便地使用其它的语言进行对接使用

Shay 最终把这个项目称之为 Elasticsearch,并于当年10月发布与 github 上。如果你对 Elasticsearch 的历史更感兴趣的话,请阅读另外一篇我同事写的文章 “Elasticsearch 的前世今生”。

Elasticsearch 也是使用 Java 编写并使用 Lucene 来建立索引并实现搜索功能,但是它的目的是通过简单连贯的 RESTful API 让全文搜索变得简单并隐藏 Lucene 的复杂性。

不过,Elasticsearch 不仅仅是 Lucene 和全文搜索引擎,它还提供:

分布式的实时文件存储,每个字段都被索引并可被搜索

实时分析的分布式搜索引擎

可以扩展到上百台服务器,处理 PB 级结构化或非结构化数据

而且,所有的这些功能被集成到一台服务器,你的应用可以通过简单的 RESTful API、各种语言的客户端甚至命令行与之交互。上手 Elasticsearch 非常简单,它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它开箱即用(安装即可使用),只需很少的学习既可在生产环境中使用。Elasticsearch 在 Elastic V2 及 SSPL 下许可使用,可以免费下载、使用和修改。 随着知识的积累,你可以根据不同的问题领域定制 Elasticsearch 的高级特性,这一切都是可配置的,并且配置非常灵活。

Elasticsearch 的特点是它提供了一个极速的搜索体验。这源于它的高速(speed)。相比较其它的一些大数据引擎,Elasticsearch 可以实现秒级的搜索,但是对于它们来说,可能需要数小时或更长才能完成。Elasticsearch 的 cluster 是一种分布式的部署,极易扩展(scale)。这样很容易使它处理 petabytes 的数据库容量。最重要的是 Elasticsearch 是它搜索的结果可以按照分数进行排序,它能提供我们最相关的搜索结果(relevance)。我们可以依据自己的业务场景有正对性地进行 relevance 定制。

分布式及高可用性的搜素引擎

  1. 每个索引(index)都使用可配置数量的分片进行完全分片
  2. 每个分片都可以有一个或多个副本
  3. 在任何副本分片上可执行读取/搜索操作

多租户

  1. 支持多个索引
  2. 索引级别配置(分片数,索引存储,......)

各种API

  1. HTTP RESTful API
  2. Native Java API
  3. 所有 API 都执行自动节点操作重新路由

面向文档

无需前期定义 schema (文档结构)

可以定义 schema 以定制索引过程

可靠,异步写入,可实现长期持续性

(近)实时搜索

建在 Lucene 之上

每个分片都是一个功能齐全的 Lucene 索引

Lucene 的所有功能都可以通过简单的配置/插件轻松暴露出来

每次操作一致性

单文档级操作具有原子性,一致性,隔离性和持久性。

入门指南

首先,不要恐慌。 获得 Elasticsearch 的全部内容需要5分钟。

前提要求

你需要在你的电脑上安装最新的 Java(在最新的版本中,Java 可以不用安装,因为在安装包中已经含有 Java 的安装包)。你可查看 setup 链接得到更多的信息。

安装

你可以到链接 Download 里去下载 Elasticsearch 最新的发布版。可以参考文档 “Elastic:开发者上手指南” 来安装 Elasticsearch

在 Unix/Linux上运行 bin/elasticsearch,或在 Windows 上运行 bin\elasticsearch.bat

运行 curl -X GET http://localhost:9200。你在 Windows 上可以安装 cygwin 来运行 curl 指令

运行更多的服务器...

Java中间件-Elasticsearch相关推荐

  1. 【金三银四】Java中间件面试题(2021最新版)

    目录 前言 Zookeeper 1. ZooKeeper 是什么? 2. ZooKeeper 提供了什么? 3.Zookeeper 文件系统 4. ZAB 协议? 5. 四种类型的数据节点 Znode ...

  2. java操作elasticsearch实现query String

    1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...

  3. 大型网站系统与Java中间件实践 01 认识分布式

    01 认识分布式 02 Java中间件 03 分布式框架 如果感觉文章中的图片不清楚可以查看下面链接: 原图VISIO: https://note.youdao.com/share/?id=7a495 ...

  4. 大型网站系统与Java中间件实践pdf

    下载地址:网盘下载 基本介绍 编辑 内容简介 到底是本什么书,拥有这样一份作序推荐人列表:阿里集团章文嵩博士|新浪TimYang|去哪网吴永强|丁香园冯大辉|蘑菇街岳旭强|途牛汤峥嵘|豆瓣洪强宁|某电 ...

  5. Java中间件:淘宝网系统高性能利器

    [TechTarget中国原创]淘宝网是亚太最大的网络零售商圈,其知名度毋庸置疑,吸引着越来越多的消费者从街头移步这里,成为其忠实粉丝.如此多的用户和交易量,也意味着海量的信息处理,其背后的IT架构的 ...

  6. java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询

    1.前缀查询(prefix) //prefix前缀查询 @Testpublic void test15() throws UnknownHostException {//1.指定es集群 cluste ...

  7. java操作elasticsearch实现批量添加数据(bulk)

    java操作elasticsearch实现批量添加主要使用了bulk 代码如下: //bulk批量操作(批量添加) @Testpublic void test7() throws IOExceptio ...

  8. Xianfeng轻量级Java中间件平台:权限管理

    权限管理:是通过系统对用户的行为进行控制的一套业务规则,可以做得很简单,比如通过硬编码的方式进行控制,也可以做得很复杂,比如通过一些复杂的权限模型去实现一些复杂的权限控制,比如菜单访问权限.按钮操作权 ...

  9. 大型网站系统与Java中间件实践

    大型网站系统与Java中间件实践(贯通分布式高并发高数据高访问量网站架构与实现之权威著作,九大一线互联网公司CTO联合推荐) 曾宪杰 著   ISBN 978-7-121-22761-5 2014年4 ...

最新文章

  1. 事件相机角点检测,从原理到demo
  2. 机器学习前沿:Michael Jordan与鬲融、金驰、马腾宇等青年才俊的对话
  3. 一生只见一次的大彗星今天来了!
  4. android的构成和工作流程,分析Android中View的工作流程
  5. Unity3D 优化相关
  6. 简述div标签和span标签的不同,div和span标签之间的区别
  7. C语言计算文件MD5
  8. java 相同字符不连续_Java中字符串中连续相同字符去重方法
  9. 【WPF】对Frame控件的Content属性做绑定时出现的一个小问题
  10. 抖音抓包下载完整版视频
  11. 智能世界的罗马是怎样建成的?
  12. 读书笔记——《柯维的智慧》格言
  13. 关于PLC控制系统中电动机过载保护方法的探究
  14. 高德地图JSAPI测距功能优化
  15. 光伏电站运维管理方案
  16. 扩展:收藏网上胖友的面试题
  17. -moz、-ms、-webkit浏览器私有前缀详解,作用、出处
  18. Java实现文件查重去重
  19. C++重载相等运算符operator==的两种方式
  20. 数学分析与高等数学——学习资料(更新.........)

热门文章

  1. 中兴 面试2020-09-21
  2. 中软国际成功签单东马来西亚智慧城市项目
  3. 长安大学计算机专业考研科目,长安大学2021年考研846计算机类学科基础参考书目...
  4. PowerDVD14极致蓝光版注册激活补丁
  5. 从零开始的RF框架搭建
  6. 瞎折腾篇:联想笔记本外扩GTX1060——刷BIOS
  7. 5个机器学习开源项目,挑战你的数据科学技能!(附链接)
  8. Linux多线程调度策略
  9. iOS开发之仿微博视频边下边播之自定义AVPlayer播放器, 边下边播解剖。视频处理流程,建立连接-请求数据-统筹数据-解码数据-视频呈现
  10. 在IE里屏蔽三国杀游戏网站