快速入门
Elasticsearch 快速入门
ElasticSearch是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库,无论是开源还是私有。
但是 Lucene 仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理。Lucene 非常 复杂。
ElasticSearch也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。
然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。它可以被下面这样准确的形容:
一个分布式的实时文档存储,每个字段 可以被索引与搜索
一个分布式实时分析搜索引擎
能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
官方客户端在Java、.NET、PHP、Python、Ruby、Nodejs和许多其他语言中都是可用的。根据 DB-Engines 的排名显示,ElasticSearch 是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
ES 开发指南
中文文档请参考:《Elasticsearch: 权威指南》[1]
英文文档请参考:《Elasticsearch Reference》[2]
下载:https://www.elastic.co/cn/downloads/
ES API文档
API Conventions[3]
Document APIs[4]
Search APIs[5]
Indices APIs[6]
cat APIs[7]
Cluster APIs[8]
Javascript api[9]
Logstash
Logstash Reference[10]
Configuring Logstash[11]
Input plugins[12]
Output plugins[13]
Filter plugins[14]
Kibana DevTools 快捷键
Ctrl+i 自动缩进
Ctrl+Enter 提交
Down 打开自动补全菜单
Enter 或 Tab 选中项自动补全
Esc 关闭补全菜单
pretty = true
在任意的查询字符串中增加pretty参数,会让 Elasticsearch 美化输出(pretty-print)JSON响应以便更加容易阅读。
Kibana 命令
// 查询集群的磁盘状态
GET _cat/allocation?v
// 获取所有索引
GET _cat/indices
// 按索引数量排序
GET _cat/indices?s=docs.count:desc
GET _cat/indices?v&s=index
// 集群有多少节点
GET _cat/nodes
// 集群的状态
GET _cluster/health?pretty=true
GET _cat/indices/*?v&s=index
//获取指定索引的分片信息
GET logs/_search_shards
...
集群状态
curl -s -XGET 'http://<host>:9200/_cluster/health?pretty'
//系统正常,返回的结果
{
"cluster_name" : "es-qwerty",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 3,
"number_of_data_nodes" : 3,
"active_primary_shards" : 1,
"active_shards" : 2,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}
检索文档
POST logs/_search
{
"query":{
"range":{
"createdAt":{
"gt":"2020-04-25",
"lt":"2020-04-27",
"format": "yyyy-MM-dd"
}
}
},
"size":0,
"aggs":{
"url_type_stats":{
"terms": {
"field": "urlType.keyword",
"size": 2
}
}
}
}
POST logs/_search
{
"query":{
"range":{
"createdAt":{
"gte":"2020-04-26 00:00:00",
"lte":"now",
"format": "yyyy-MM-dd hh:mm:ss"
}
}
},
"size":0,
"aggs":{
"url_type_stats":{
"terms": {
"field": "urlType.keyword",
"size": 2
}
}
}
}
POST logs/_search
{
"query":{
"range": {
"