假装天天接触大数据的样子= =|
Basic的意思就是:了解这个东西是做什么的?如何配置安装?简单实用方法是怎样的?
有了这个概念,就可以上手操作。
上云后,重新部署之后,对应的pod会被删除释放,但log信息存储到了ES里,所以可以从kibana上进行搜索。图形化工具可以简单完成过滤的需求。但需要连续的上下文时,就需要手写查询语句了。
这里可以看到 Elasticsearch的入门教程 ,配套使用的是 kibana,kibana的简单安装教程参考这里,这是一个系列文章。
全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。
它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。
下面这个操作,就可以返回连续时间片段内的200条内容。
POST /apps-log-2019-12-06/_search
{
"size": 200,
"_source": "msg",
"query": {
"bool": {
"must": [
{
"term": {
"namespace": "testtest"
}
},
{
"term": {
"cluster": "dev1"
}
},
{
"term": {
"deployname": "pod name"
}
},
{
"range": {
"@timestamp": {
"gte": "2019-12-06T06:30:28.626Z",
"lte": "2019-12-06T06:38:51.710Z"
}
}
}
]
}
}
}
上面这篇的关键就是最后的查询方法。
可惜没掌握为什么,所以半年之后就忘记了。今天查询时再次遇到相同的场景,又自己查资料请教同事,最后得到的结果还是一样的。
在Kibana的dev tools
功能页面进行类SQL的查询。
GET /_search
{
"query": {
"bool": {
"must": [
{ "match": { "title": "Search" }},
{ "match": { "content": "Elasticsearch" }}
],
"filter": [
{ "term": { "status": "published" }},
{ "range": { "publish_date": { "gte": "2015-01-01" }}}
]
}
}
}
- The
query
parameter indicates query context. - The
bool
and twomatch
clauses are used in query context, which means that they are used to score how well each document matches. - The
filter
parameter indicates filter context. - The
term
andrange
clauses are used in filter context. They will filter out documents which do not match, but they will not affect the score for matching documents.
注意时间格式,最好转换为实际log中的日期格式格式,否则需要自己计算转换,官方支持的日期格式(从跳转关系可以看出来,目前使用的是6.4版本:) )
POST /apps-log-2020-07-08/_search
{
"size": 200,
"query": {
"bool": {
"must": [
{
"term": {
"namespace": "namse of space"
}
},
{
"term": {
"cluster": "dev1"
}
},
{
"term": {
"deployname": "service name"
}
},
{
"term": {
"podname": "pod name mc5cl"
}
}
],
"filter": {
"range": {
"@timestamp": {
"gte": "2020-07-08T17:31:00.000+08:00",
"lte": "2020-07-08T17:41:00.000+08:00"
}
}
}
}
}
}
comments powered by Disqus