(2/2)基于容器化,快速使用ElasticSearch

四、常见的操作指南

下面是一些日常使用疑问

1、如何kibana调用es接口命令

登录kibana系统后,在菜单栏中Management->Dev Tools, 进入后我们在左侧框中输入(先清空),输入下面的内容

GET /

右侧栏中会出现一段json,可以看到我们的es版本等信息.

{  "name": "dae8747df6f0",  "cluster_name": "docker-cluster",  "cluster_uuid": "toprRlPKRv22cMX8gh96LQ",  "version": {    "number": "8.4.3",    "build_flavor": "default",    "build_type": "docker",   "build_hash": "42f05b9372a9a4a470db3b52817899b99a76ee73",    "build_date": "2022-10-04T07:17:24.662462378Z",    "build_snapshot": false,    "lucene_version": "9.3.0",    "minimum_wire_compatibility_version": "7.17.0",    "minimum_index_compatibility_version": "7.0.0"  },  "tagline": "You Know, for Search"}

2、添加单个文档

提交以下索引请求以将单个日志条目添加到 logs-myapp 数据流。

由于 logs-myapp不存在,请求会使用内置的 logs-*-* 索引模板自动创建它。

这里模拟的是一个请求的文件日志记录

POST logs-myapp/_doc{  "@timestamp": "2099-05-06T16:21:15.000Z",  "event": {    "original": "192.0.2.42 - - [06/May/2099:16:21:15 +0000] \"GET /images/bg.jpg HTTP/1.0\" 200 24736"  }}

返回数据

响应包括 Elasticsearch 为文档生成的元数据:

  • 包含文档的支持 _index。Elasticsearch 会自动生成支持索引的名称。

  • 索引中文档的唯一 _id。

{  "_index": "logs-myapp",  "_id": "snwQN4QBFZ31xH8Hlg-J",  "_version": 1,  "result": "created",  "_shards": {    "total": 2,    "successful": 1,    "failed": 0  },  "_seq_no": 0,  "_primary_term": 1}

3、添加多个文档

使用 _bulk 端点在一个请求中添加多个文档。批量数据必须是换行符分隔的 JSON (NDJSON)。每行必须以换行符 (\n) 结尾,包括最后一行。

PUT logs-myapp/_bulk{ "create": { } }{ "@timestamp": "2099-05-07T16:24:32.000Z", "event": { "original": "192.0.2.242 - - [07/May/2020:16:24:32 -0500] \"GET /images/hm_nbg.jpg HTTP/1.0\" 304 0" } }{ "create": { } }{ "@timestamp": "2099-05-08T16:25:42.000Z", "event": { "original": "192.0.2.255 - - [08/May/2099:16:25:42 +0000] \"GET /favicon.ico HTTP/1.0\" 200 3638" } }

响应数据

{  "took": 28,  "errors": false,  "items": [    {      "create": {        "_index": "logs-myapp",        "_id": "s3wVN4QBFZ31xH8HcQ8j",        "_version": 1,        "result": "created",        "_shards": {          "total": 2,          "successful": 1,          "failed": 0        },        "_seq_no": 1,        "_primary_term": 1,        "status": 201      }    },    {      "create": {        "_index": "logs-myapp",        "_id": "tHwVN4QBFZ31xH8HcQ8j",        "_version": 1,        "result": "created",        "_shards": {          "total": 2,          "successful": 1,          "failed": 0        },        "_seq_no": 2,        "_primary_term": 1,        "status": 201      }    }  ]}

4、查看当前索引

GET _cat/indices

5、搜索文档内容

查询条件为所有条目,

按字段@timestamp降序排列

GET logs-myapp/_search{  "query": {    "match_all": {}  },  "sort": [    {      "@timestamp": {        "order": "desc"      }    }  ]}

返回结果

{  "took": 0,  "timed_out": false,  "_shards": {    "total": 1,    "successful": 1,    "skipped": 0,    "failed": 0  },  "hits": {    "total": {      "value": 3,      "relation": "eq"    },    "max_score": null,    "hits": [      {        "_index": "logs-myapp",        "_id": "tHwVN4QBFZ31xH8HcQ8j",        "_score": null,        "_source": {          "@timestamp": "2099-05-08T16:25:42.000Z",          "event": {            "original": """192.0.2.255 - - [08/May/2099:16:25:42 +0000] "GET /favicon.ico HTTP/1.0" 200 3638"""          }        },        "sort": [          4081940742000        ]      },      {        "_index": "logs-myapp",        "_id": "s3wVN4QBFZ31xH8HcQ8j",        "_score": null,        "_source": {          "@timestamp": "2099-05-07T16:24:32.000Z",          "event": {            "original": """192.0.2.242 - - [07/May/2020:16:24:32 -0500] "GET /images/hm_nbg.jpg HTTP/1.0" 304 0"""          }        },        "sort": [          4081854272000        ]      },      {        "_index": "logs-myapp",        "_id": "snwQN4QBFZ31xH8Hlg-J",        "_score": null,        "_source": {          "@timestamp": "2099-05-06T16:21:15.000Z",          "event": {            "original": """192.0.2.42 - - [06/May/2099:16:21:15 +0000] "GET /images/bg.jpg HTTP/1.0" 200 24736"""          }        },        "sort": [          4081767675000        ]      }    ]  }}

6、搜索文档内容-特定字段

对于大文档,解析整个_source很麻烦,

我们需要将_source参数置为false。

然后从fields参数中来检索想要的字段

GET logs-myapp/_search{  "query": {    "match_all": {}  },  "fields": [    "@timestamp"  ],  "_source": false,  "sort": [    {      "@timestamp": {        "order": "desc"      }    }  ]}

响应数据

{  "took": 0,  "timed_out": false,  "_shards": {    "total": 1,    "successful": 1,    "skipped": 0,    "failed": 0  },  "hits": {    "total": {      "value": 3,      "relation": "eq"    },    "max_score": null,    "hits": [      {        "_index": "logs-myapp",        "_id": "tHwVN4QBFZ31xH8HcQ8j",        "_score": null,        "fields": {          "@timestamp": [            "2099-05-08T16:25:42.000Z"          ]        },        "sort": [          4081940742000        ]      },      {        "_index": "logs-myapp",        "_id": "s3wVN4QBFZ31xH8HcQ8j",        "_score": null,        "fields": {          "@timestamp": [            "2099-05-07T16:24:32.000Z"          ]        },        "sort": [          4081854272000        ]      },      {        "_index": "logs-myapp",        "_id": "snwQN4QBFZ31xH8Hlg-J",        "_score": null,        "fields": {          "@timestamp": [            "2099-05-06T16:21:15.000Z"          ]        },        "sort": [          4081767675000        ]      }    ]  }}

7、搜索文档内容-查询范围

在特定的时间或者IP范围内进行搜索

GET logs-myapp/_search{  "query": {    "range": {      "@timestamp": {        "gte": "2099-05-07",        "lte": "2099-05-08"      }    }  },  "fields": [    "@timestamp"  ],  "_source": false,  "sort": [    {      "@timestamp": {        "order": "desc"      }    }  ]}

响应数据

{  "took": 0,  "timed_out": false,  "_shards": {    "total": 1,    "successful": 1,    "skipped": 0,    "failed": 0  },  "hits": {    "total": {      "value": 2,      "relation": "eq"    },    "max_score": null,    "hits": [      {        "_index": "logs-myapp",        "_id": "tHwVN4QBFZ31xH8HcQ8j",        "_score": null,        "fields": {          "@timestamp": [            "2099-05-08T16:25:42.000Z"          ]        },        "sort": [          4081940742000        ]      },      {        "_index": "logs-myapp",        "_id": "s3wVN4QBFZ31xH8HcQ8j",        "_score": null,        "fields": {          "@timestamp": [            "2099-05-07T16:24:32.000Z"          ]        },        "sort": [          4081854272000        ]      }    ]  }}

8、搜索文档内容-查询范围

对过去一天进行查询 ,表达式

GET logs-myapp/_search{  "query": {    "range": {      "@timestamp": {        "gte": "now-1d/d",        "lte": "now/d"      }    }  },  "fields": [    "@timestamp"  ],  "_source": false,  "sort": [    {      "@timestamp": {        "order": "desc"      }    }  ]}

响应数据

{  "took": 0,  "timed_out": false,  "_shards": {    "total": 1,    "successful": 1,    "skipped": 0,    "failed": 0  },  "hits": {    "total": {      "value": 0,      "relation": "eq"    },    "max_score": null,    "hits": []  }}

9、搜索文档内容-提取内容

POST logs-test/_doc/1{  "raw_message":"199.72.81.55 - - [01/Jul/1995:00:00:01 -0400] GET /history/apollo/ HTTP/1.0 200 6245",  "address":"1.2.3.4"}

结果

{  "_index": "logs-test",  "_id": "1",  "_version": 1,  "result": "created",  "_shards": {    "total": 2,    "successful": 1,    "failed": 0  },  "_seq_no": 0,  "_primary_term": 1}