[TOC]
ElasticSearch是一款基于Apache Lucene构建的开源搜索引擎,它采用Java编写并使用Lucene构建索引、提供搜索功能,ElasticSearch的目标是让全文搜索变得简单,开发者可以通过它简单明了的RestFul API轻松地实现搜索功能,而不必去面对Lucene的复杂性。ES能够轻松的进行大规模的横向扩展,以支撑PB级的结构化和非结构化海量数据的处理。
一言以蔽之:ElasticSearch是一款基于Lucene的实时分布式搜索和分析引擎。 ElasticSearch设计主要用于云计算中,能够达到实时搜索、稳定、可靠、快速,安装使用也非常方便。
官网:www.elastic.co
关于ElasticSearch的小故事:
Shay Banon认为自己参与Lucene完全是一种偶然,当年他还是一个待业工程师,跟随自己的新婚妻子来到伦敦,
妻子想在伦敦学习做一名厨师,而自己则想为妻子开发一个方便搜索菜谱的应用,所以才接触到Lucene。
直接使用Lucene构建搜索有很多问题,包含大量重复性的工作,所以Shay便在Lucene的基础上不断地进行抽象,
让Java程序嵌入搜索变得更容易,经过一段时间的打磨便诞生了他的第一个开源作品“Compass”,中文即“指南针”
的意思。之后,Shay找到了一份面对高性能分布式开发环境的新工作,在工作中他渐渐发现越来越需要一个易用的、
高性能、实时、分布式搜索服务,于是他决定重写Compass,将它从一个库打造成了一个独立的server,并将其改名为Elasticsearch。
接口
类似webservice的接口
REST风格的访问接口
分布式存储
solrCloud solr4.x才支持
es是为分布式而生的
支持的格式
solr xml json
es json
近实时搜索
MySQL | ElasticSearch |
---|---|
database(数据库) | index(索引库) |
table(表) | type(类型) |
row(行) | document(文档) |
column(列) | field(字段) |
REST全称Representational State Transfer。是一种软件的架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
其实说白了就是类似HTTP的访问,和HTTP非常的相似。
REST操作:
GET:获取对象的当前状态;
PUT:改变对象的状态;
POST:创建对象;
DELETE:删除对象;
HEAD:获取头信息。
资源 | 一组资源的URI,比如:http://example.com/res/ | 单个资源的URI,比如:http://example.com/res/123 |
---|---|---|
GET | 列出URI,以及该资源组中每个资源的详细信息(后者可选) | 获取指定的资源的详细信息,格式可以自选一个合适的网络媒体类型(比如:XML、JSON等) |
PUT | 使用给定的一组资源替换当前整组资源 | 替换/创建指定的资源。并将其追加到相应的资源组中。 |
POST | 在本组资源中创建/追加一个新的资源。该操作往往返回新的URL | 把指定的资源当做一个资源组,并在其下创建/追加一个新的元素,使其隶属于当前资源。 |
DELETE | 删除整组资源 | 删除指定的元素 |
URL | 描述 |
---|---|
/index/_search | 搜索指定索引下的数据 |
/_aliases | 获取或操作索引的别名 |
/index/ | 查看指定索引的详细信息 |
/index/type/ | 创建或操作类型 |
/index/_mapping | 创建或操作mapping |
/index/_setting | 创建或操作设置(number_of_shards是不可更改的) |
/index/_open | 打开指定被关闭的索引 |
/index/_close | 关闭指定索引 |
/index/_refresh | 刷新索引(使新加内容对搜索可见,不保证数据被写入磁盘) |
/index/flush | 刷新索引(会触发Lucene提交) |
注意:只能安装在普通用户下面,不能安装的root用户下面。
unzip elasticsearch-2.3.0.zip -d ../解压到指定目录
配置config/elasticsearch.yml
cluster.name: bigdata-08-28
node.name: hadoop
path.data: /home/uplooking/data/elasticsearch
path.logs: /home/uplooking/logs/elasticsearch
network.host: uplooking01
启动:
$ELASTICSEARCH_HOME/bin/elasticsearch -d
验证:
访问es的安装服务器,http://<es_ip>:9200
logging.yml
日志配置文件,es也是使用log4j来记录日志的,所以logging.yml里的设置按普通log4j配置来设置就行了。
elasticsearch.yml
es的基本配置文件,需要注意的是key和value的格式“:”之后需要一个空格。
修改如下配置之后,就可以从别的机器上进行访问了
Transport.tcp.port:9300 设置节点间交互的tcp端口,默认为9300
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。