ELK 使用 python 查询 - 多个条件
ELK querying with python - Multiple conditions
我正在尝试使用以下查询查询 ELK:
query = {
"query": {
"match" : { "event.action" : "ssh_login" },
"range": {
"timestamp": {
"gte": "now-2d/d",
"lt": "now/d"
}
}
}
}
但是我收到以下错误:
RequestError: RequestError(400, 'parsing_exception', '[match] malformed query, expected [END_OBJECT] but found [FIELD_NAME]')
我想要 "event.action"
等于 "ssh_login"
的所有样本,我还想获得特定时间 window。上述查询的正确格式是什么?我也有指定时间戳的问题。时间戳的格式是[2021-07-14T05:24:07.000Z]
,如何使用具体的时间戳进行查询?
谢谢!
首先,最好提供更多的上下文,至少包括以下内容:
- ES 版本
- Python版本
- Elasticsearch python 客户端版本
- 索引映射
也就是说,我会做出一些假设并继续。
- ES : 7.14.0
- Python : 3.7.7
- Elasticsearch Python 客户端:7.14.1
- 查询
您必须使用 bool
查询才能有多个 queries/conditions 来查找相关文档。
from elasticsearch import Elasticsearch
es = Elasticsearch()
body = {
'query': {
'bool': {
'must': [
{'term': {'event.action': {'value': 'ssh_login'}}},
{'range': {'timestamp': {'gte': '2020-01-01T01:01:01.000Z'}}}
]
}
}
}
es.search(index="YOUR INDEX NAME", body=body)
- 时间戳
这取决于您的映射。在我的示例中,我使用了以下映射。
{
'test': {
'mappings': {
'properties': {
'event': {
'properties': {
'action': {
'type': 'keyword'
}
}
},
'timestamp': {
'type': 'date'
}
}
}
}
}
如果您指定的自定义日期格式与您尝试查询的格式不兼容,则可能会引发错误。
我正在尝试使用以下查询查询 ELK:
query = {
"query": {
"match" : { "event.action" : "ssh_login" },
"range": {
"timestamp": {
"gte": "now-2d/d",
"lt": "now/d"
}
}
}
}
但是我收到以下错误:
RequestError: RequestError(400, 'parsing_exception', '[match] malformed query, expected [END_OBJECT] but found [FIELD_NAME]')
我想要 "event.action"
等于 "ssh_login"
的所有样本,我还想获得特定时间 window。上述查询的正确格式是什么?我也有指定时间戳的问题。时间戳的格式是[2021-07-14T05:24:07.000Z]
,如何使用具体的时间戳进行查询?
谢谢!
首先,最好提供更多的上下文,至少包括以下内容:
- ES 版本
- Python版本
- Elasticsearch python 客户端版本
- 索引映射
也就是说,我会做出一些假设并继续。
- ES : 7.14.0
- Python : 3.7.7
- Elasticsearch Python 客户端:7.14.1
- 查询
您必须使用 bool
查询才能有多个 queries/conditions 来查找相关文档。
from elasticsearch import Elasticsearch
es = Elasticsearch()
body = {
'query': {
'bool': {
'must': [
{'term': {'event.action': {'value': 'ssh_login'}}},
{'range': {'timestamp': {'gte': '2020-01-01T01:01:01.000Z'}}}
]
}
}
}
es.search(index="YOUR INDEX NAME", body=body)
- 时间戳
这取决于您的映射。在我的示例中,我使用了以下映射。
{
'test': {
'mappings': {
'properties': {
'event': {
'properties': {
'action': {
'type': 'keyword'
}
}
},
'timestamp': {
'type': 'date'
}
}
}
}
}
如果您指定的自定义日期格式与您尝试查询的格式不兼容,则可能会引发错误。