ELK-ElasticSearch 索引查询使用指南——详细版

1、使用_cat API检测集群是否健康,确保9200端口号可用:
curl ‘localhost:9200/_cat/health?v‘

注意:绿色表示一切正常,黄色表示所有的数据可用但是部分副本还没有分配,红色表示部分数据因为某些原因不可用。

2、获取集群的节点列表
curl ‘localhost:9200/_cat/nodes?v‘

3、查看所有索引
curl http://localhost:9200/_cat/indices?v

4、curl用法
-X 指定http的请求方法,有HEAD GET POST PUT DELETE
-d 指定要传输的数据
-H 指定http请求头信息

5、新增索引
现在我们创建一个名为"customer"的索引,然后再查看所有的索引:
curl -XPUT ‘localhost:9200/customer?pretty‘
curl ‘localhost:9200/_cat/indices?v‘

6、插入和获取
6.1、插入数据

必须给ES指定索引的类型,如索引为customer,类型为external,ID为1,主体为JSON格式的语句:{ "name": "John Doe" }

curl -XPUT -H "Content-Type: application/json" ‘localhost:9200/customer/external/1?pretty‘ -d ‘
{
"name": "John Doe",
"age": 10
}‘

curl -XPUT -H "Content-Type: application/json" ‘localhost:9200/customer/external/3?pretty‘ -d ‘
{
"name": "AAA",
"age": 20
}‘

curl -XPUT -H "Content-Type: application/json" ‘localhost:9200/customer/external/4?pretty‘ -d ‘
{
"name": "BBB",
"age": 30
}‘

curl -XPUT -H "Content-Type: application/json" ‘localhost:9200/customer/external/5?pretty‘ -d ‘
{
"name": "EEE",
"age": 40
}‘

返回结果为:create:true 表示插入成功。

6.2、获取数据
curl -XGET ‘localhost:9200/customer/external/1?pretty‘

其中含义为:获取customer索引下类型为external,id为1的数据,pretty参数表示返回结果格式美观。

7、删除索引
curl -XDELETE ‘localhost:9200/customer?pretty‘
curl ‘localhost:9200/_cat/indices?v‘

8、ES基本用法
通过以上命令语句的学习,我们发现索引的增删改查有一个类似的格式,总结如下:
curl -X<REST Verb> <ip>:<Port>/<Index>/<Type>/<ID>
<REST Verb>:REST风格的语法谓词
<ip>:节点ip
<port>:节点端口号,默认9200
<Index>:索引名
<Type>:索引类型
<ID>:操作对象的ID号

ES的动作是以http方法来决定的,常用的http方法: GET/PUT/POST/DELETE

9、修改数据
curl -XPUT -H "Content-Type: application/json" ‘localhost:9200/customer/external/2?pretty‘ -d ‘
{
"name": "aaa"
}‘

curl -XPUT -H "Content-Type: application/json" ‘localhost:9200/customer/external/2?pretty‘ -d ‘
{
"name": "Java"
}‘

上述命令语句是:先新增id为1,name为aaa的数据,然后将id为2的name修改为Java。

10.更新数据

10.1 这个例子展示如何将id为1文档的name字段更新为Jane Doe:

curl -XPOST -H "Content-Type: application/json" ‘localhost:9200/customer/external/1/_update?pretty‘ -d ‘
{
"doc": { "name": "Jane Doe AAA" }
}‘

10.2 这个例子展示如何将id为1数据的name字段更新为Jane Doe同时增加字段age为20:
curl -XPOST -H "Content-Type: application/json" ‘localhost:9200/customer/external/1/_update?pretty‘ -d ‘
{
"doc": { "name": "Jane Doe", "age": 20 }
}‘

10.3 也可以通过一些简单的scripts来执行更新。一下语句通过使用script将年龄增加5:
curl -XPOST -H "Content-Type: application/json" ‘localhost:9200/customer/external/1/_update?pretty‘ -d ‘
{
"script" : "ctx._source.age += 5"
}‘

11、删除数据
删除数据那是相当的直接. 下面的语句将执行删除Customer中ID为2的数据:
curl -XDELETE ‘localhost:9200/customer/external/2?pretty‘

12、批处理
下面语句将在一个批量操作中执行创建索引:
curl -XPOST -H "Content-Type: application/json" ‘localhost:9200/customer/external/_bulk?pretty‘ -d ‘
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }

查看数据
curl -XGET ‘localhost:9200/customer/external/2?pretty‘
curl -XGET ‘localhost:9200/customer/external/_search?pretty‘

下面语句批处理执行更新id为1的数据然后执行删除id为2的数据
curl -XPOST -H "Content-Type: application/json" ‘localhost:9200/customer/external/_bulk?pretty‘ -d ‘
{"update":{"_id":"1"}}
{"doc": { "name": "John Doe becomes Jane Doe" } }
{"delete":{"_id":"2"}}

curl -XGET ‘localhost:9200/customer/external/_search?pretty‘

13、查询
curl ‘localhost:9200/customer/external/_search?q=*&pretty‘

上面示例返回所有customer中的索引数据。其中 q=* 表示匹配索引中所有的数据。

等价于:
curl -XPOST -H "Content-Type: application/json" ‘localhost:9200/customer/external/_search?pretty‘ -d ‘
{
"query": { "match_all": {} }
}‘

14、查询语言
匹配所有数据,但只返回1个:
curl -XPOST -H "Content-Type: application/json" ‘localhost:9200/customer/external/_search?pretty‘ -d ‘
{
"query": { "match_all": {} },
"size": 1
}‘

注意:如果siez不指定,则默认返回10条数据。

curl -XPOST -H "Content-Type: application/json" ‘localhost:9200/customer/external/_search?pretty‘ -d ‘
{
"query": { "match_all": {} },
"from": 0,
"size": 10
}‘

返回从0到10的数据。(索引下标从0开始)

curl -XPOST -H "Content-Type: application/json" ‘localhost:9200/customer/external/_search?pretty‘ -d ‘
{
"query": { "match_all": {} },
"sort": { "age": { "order": "desc" } }
}‘

curl -XPOST -H "Content-Type: application/json" ‘localhost:9200/customer/external/_search?pretty‘ -d ‘
{
"query": { "match_all": {} },
"sort": { "age": { "order": "asc" } }
}‘
上述示例匹配所有的索引中的数据,按照age字段降序排序,并且返回前10条(如果不指定size,默认最多返回10条)。

15、执行搜索
下面例子展示如何返回两个字段(name age)
curl -XPOST -H "Content-Type: application/json" ‘localhost:9200/customer/external/_search?pretty‘ -d ‘
{
"query": { "match_all": {} },
"_source": ["name", "age"]
}‘

返回age为20 的数据:
curl -XPOST -H "Content-Type: application/json" ‘localhost:9200/customer/external/_search?pretty‘ -d ‘
{
"query": { "match": { "age": 20 } }
}‘

返回name中包含Doe的所有数据::
curl -XPOST -H "Content-Type: application/json" ‘localhost:9200/customer/external/_search?pretty‘ -d ‘
{
"query": { "match": { "name": "Doe" } }
}‘

返回name中包含Doe或者AAA的所有数据:
curl -XPOST -H "Content-Type: application/json" ‘localhost:9200/customer/external/_search?pretty‘ -d ‘
{
"query": { "match": { "name": "Doe AAA" } }
}‘

和上面匹配单个词语不同,下面这个例子是多匹配(match_phrase短语匹配),返回name字段中包含短语 “mill lane”的所有数据:
curl -XPOST -H "Content-Type: application/json" ‘localhost:9200/customer/external/_search?pretty‘ -d ‘
{
"query": { "match_phrase": { "name": "mill lane" } }
}‘

以下是布尔查询,布尔查询允许我们将多个简单的查询组合成一个更复杂的布尔逻辑查询。

原文地址:https://www.cnblogs.com/linjiqin/p/10764101.html

时间: 2024-10-17 07:33:33

ELK-ElasticSearch 索引查询使用指南——详细版的相关文章

ElasticSearch 索引查询使用指南——详细版

我们通常用用_cat API检测集群是否健康. 确保9200端口号可用: curl 'localhost:9200/_cat/health?v' 绿色表示一切正常, 黄色表示所有的数据可用但是部分副本还没有分配,红色表示部分数据因为某些原因不可用. 2.通过如下语句,我们可以获取集群的节点列表: curl 'localhost:9200/_cat/nodes?v' 3.通过如下语句,列出所有索引: curl 'localhost:9200/_cat/indices?v' 返回结果: 4.创建索引

ElasticSearch 索引查询使用指南(开发笔记170203)

检测集群是否健康 curl 'localhost:9200/_cat/health?v' 绿色表示一切正常, 黄色表示所有的数据可用但是部分副本还没有分配,红色表示部分数据因为某些原因不可用. 通过如下语句,我们可以获取集群的节点列表 curl 'localhost:9200/_cat/nodes?v' 列出所有索引 curl 'localhost:9200/_cat/indices?v' 参考:http://m.blog.csdn.net/article/details?id=52452014

ElasticSearch记录(0)详细梳理

转自:https://blog.csdn.net/makang110/article/details/80596017 题记: Elasticsearch研究有一段时间了,现特将Elasticsearch相关核心知识.原理从初学者认知.学习的角度,从以下9个方面进行详细梳理.欢迎讨论…… 0. 带着问题上路——ES是如何产生的? (1)思考:大规模数据如何检索? 如:当系统数据量上了10亿.100亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题: 1)用什么数据库好?(mysql.s

ElasticSearch 索引

ElasticSearch 索引 这是ElasticSearch 2.4 版本系列的第三篇: 第一篇:ES1:Windows下安装ElasticSearch 第二篇:ES2:ElasticSearch 集群配置 第三篇:ES3:ElasticSearch 索引 ElasticSearch是文档型数据库,索引(Index)定义了文档的逻辑存储和字段类型,每个索引可以包含多个文档类型,文档类型是文档的集合,文档以索引定义的逻辑存储模型,比如,指定分片和副本的数量,配置刷新频率,分配分析器等,存储在索

基于百度地图SDK和Elasticsearch GEO查询的地理围栏分析系统(1)

本文描述了一个系统,功能是评价和抽象地理围栏(Geo-fencing),以及监控和分析核心地理围栏中业务的表现. 技术栈:Spring-JQuery-百度地图WEB SDK 存储:Hive-Elasticsearch-MySQL-Redis 什么是地理围栏? LBS系统中,地理围栏指的是虚拟边界围成的部分. tips:这只是一个demo,支撑实习生的本科毕设,不代表生产环境,而且数据已经做了脱密处理,为了安全还是隐去了所有数据. 功能描述 1.地理围栏的圈选 (1)热力图 热力图展示的是,北京市

Elasticsearch性能优化实战指南

作者:铭毅天下 背景在当今世界,各行各业每天都有海量数据产生,为了从这些海量数据中获取想要的分析结果,需要对数据进行提取.转换,存储,维护,管理和分析. 这已然远远超出了普通处理工具.数据库等的实现能力,只有基于的分布式架构和并行处理机制的大数据工具所才能实现这些功能.Elasticsearch是响应如前所述大多数用例的最热门的开源数据存储引擎之一.Elasticsearch是一种分布式数据存储和搜索引擎,具有容错和高可用性特点.为了充分利用其搜索功能,需要正确配置Elasticsearch.简

elasticsearch kibana + 分词器安装详细步骤

elasticsearch kibana + 分词器安装详细步骤 一.准备环境 系统:Centos7 JDK安装包:jdk-8u191-linux-x64.tar.gz ES安装包:elasticsearch-7.2.0-linux-x86_64.tar.gz,下载地址 Kibana安装包:kibana-7.2.0-linux-x86_64.tar.gz,下载地址 IK分词器安装包:elasticsearch-analysis-ik-7.2.0.zip,下载地址 目前准备两个节点做节点规划,分别

Elasticsearch慢查询日志分析

目前架构: n台filebeat客户端来将每台应用上的日志传到kafka,3台kafka做集群用于日志队列,四台ES做集群,前两台存放近两天热数据日志,后两台存放两天前的历史日志,数据保存一个月,目前总数据量6T.logstash与kibana与ES在一台机器上,kibana访问域名三个kibana做轮询, 目前ELK中发现有些索引查询有点慢,于是打开ES索引查询日志来记录慢查询,进而对慢查询日志进行分析,定位问题.慢日志内容如下: [2017-08-28T11:21:02,377][WARN 

C++:C++11新特性超详细版(1)

前言: 虽然目前没有编译器能够完全实现C++11,但这并不意味着我们不需要了解,学习它.深入学习C++11,你会发现这根本就是一门新的语言,它解决了c++98中许多遗留下来的问题.早晚会有一天,C++11便会普及大部分编译器.因此,提早做些准备也是应该的. 在此我想做一个关于C++11的专题,将C++11的新特性进行一一讲解,以通俗易懂的语言及例子帮助读者入门C++11.本文便是C++11新特性超详细版系列文章的第一篇, 即C++:[C++11]新特性超详细版(1). 不过我要强调的是,这些文章