elasticsearch
程序员文章站
2022-07-01 09:41:41
...
http://developer.sohu-inc.com/display/SCEDOC/elasticsearch sce文档
http://www.elasticsearch.cn/ 中文
https://github.com/medcl/elasticsearch-rtf 中文发行版
http://log.medcl.net/ 学习的博客
安装后启动
http://localhost:9200/
{
status: 200,
name: "Jim Hammond",
version: {
number: "1.0.0",
build_hash: "a46900e9c72c0a623d71b54016357d5f94c8ea32",
build_timestamp: "2014-02-12T16:18:34Z",
build_snapshot: false,
lucene_version: "4.6"
},
tagline: "You Know, for Search"
}
安装head插件后
http://localhost:9200/_plugin/head/
connect里添加
http://10.10.90.156:9200/
ElasticSearch 简介
ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。支持通过HTTP使用JSON进行数据索引。
我们建立一个网站或应用程序,并要添加搜索功能,令我们受打击的是:搜索工作是很难的。我们希望我们的搜索解决方案要快,我们希望有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP的索引数据,我们希望我们的搜索服务器始终可用,我们希望能够一台开始并扩展到数百,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。Elasticsearch旨在解决所有这些问题和更多的。
cluster
代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。
es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。
shards
代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。
构成分布式搜索。
分片的数量只能在索引创建前指定,并且索引创建后不能更改。
replicas
代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当个某个节点某个分片损坏或丢失时可以从副本中恢复。
二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
recovery
代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。
river
代表es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。
gateway
代表es索引快照的存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。
gateway对索引快照进行存储,当这个es集群关闭再重新启动时就会从gateway中读取索引备份数据。
es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。
discovery.zen
代表es的自动发现节点机制,es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。
Transport
代表es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。
elasticsearch 跟 MySQL 中定义资料格式的角色关系对照表如下
MySQL elasticsearch
database index
table type
table schema mapping
row document
field field
分布式搜索elasticsearch java API 之(一)------与集群交互
http://www.searchtech.pro/articles/2013/02/18/1361194853254.html
关于elasticsearch的时间类型的问题
由于需要在kibana上按时间来展示图形,所以需要提供一个ES可识别的date类型的字段,ES按value来解析,默认格式为 yyyyMMdd'T'HHmmss.SSSZ
具体格式如下:
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html
java代码实现:
其中:
XXX 为+08:00
Z 为+0800
http://www.elasticsearch.cn/ 中文
https://github.com/medcl/elasticsearch-rtf 中文发行版
http://log.medcl.net/ 学习的博客
安装后启动
http://localhost:9200/
{
status: 200,
name: "Jim Hammond",
version: {
number: "1.0.0",
build_hash: "a46900e9c72c0a623d71b54016357d5f94c8ea32",
build_timestamp: "2014-02-12T16:18:34Z",
build_snapshot: false,
lucene_version: "4.6"
},
tagline: "You Know, for Search"
}
安装head插件后
http://localhost:9200/_plugin/head/
connect里添加
http://10.10.90.156:9200/
ElasticSearch 简介
ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。支持通过HTTP使用JSON进行数据索引。
我们建立一个网站或应用程序,并要添加搜索功能,令我们受打击的是:搜索工作是很难的。我们希望我们的搜索解决方案要快,我们希望有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP的索引数据,我们希望我们的搜索服务器始终可用,我们希望能够一台开始并扩展到数百,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。Elasticsearch旨在解决所有这些问题和更多的。
cluster
代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。
es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。
shards
代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。
构成分布式搜索。
分片的数量只能在索引创建前指定,并且索引创建后不能更改。
replicas
代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当个某个节点某个分片损坏或丢失时可以从副本中恢复。
二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
recovery
代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。
river
代表es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。
gateway
代表es索引快照的存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。
gateway对索引快照进行存储,当这个es集群关闭再重新启动时就会从gateway中读取索引备份数据。
es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。
discovery.zen
代表es的自动发现节点机制,es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。
Transport
代表es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。
elasticsearch 跟 MySQL 中定义资料格式的角色关系对照表如下
MySQL elasticsearch
database index
table type
table schema mapping
row document
field field
分布式搜索elasticsearch java API 之(一)------与集群交互
http://www.searchtech.pro/articles/2013/02/18/1361194853254.html
关于elasticsearch的时间类型的问题
由于需要在kibana上按时间来展示图形,所以需要提供一个ES可识别的date类型的字段,ES按value来解析,默认格式为 yyyyMMdd'T'HHmmss.SSSZ
具体格式如下:
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html
java代码实现:
public static String getNowLogTime() {
return dateFormatEn(new Date(), "yyyy-MM-dd'T'HH:mm:ssXXX", Locale.ENGLISH);
}
public static String dateFormatEn(Date date, String format, Locale locale) {
SimpleDateFormat sf = new SimpleDateFormat(format, locale);
return sf.format(date);
}
其中:
XXX 为+08:00
Z 为+0800
推荐阅读
-
《ElasticSearch6.x实战教程》之简单搜索、Java客户端(上)
-
详解centos7虚拟机安装elasticsearch5.0.x-安装篇
-
Linux系统下 centos7下搭建ElasticSearch中间件及常用接口演示
-
Elasticsearch单机双节点集群部署实战
-
SpingBoot:整合Elasticsearch7.2.0
-
Elasticsearch 6.3.1、Head插件 安装及配置
-
MySQL 与 Elasticsearch 数据不对称问题解决办法
-
基于elasticsearch的自定义业务告警的设计思路
-
Elasticsearch 常用API
-
使用Python操作Elasticsearch数据索引的教程