ElastAlert 错误 - '找不到 [@timestamp] 的映射以便排序

ElastAlert Error - 'No mapping found for [@timestamp] in order to sort on

我正在使用命令 'elastalert-test-rule' 测试 elastalert。
而且,我收到了错误消息。

elastalert_error - {'message': "Error running query: RequestError(400, 'search_phase_execution_exception', 'No mapping found for [@timestamp]
in order to sort on')", 
(omission)
raise HTTP_EXCEPTIONS.get(status_code, TransportError)(', "elasticsearch.exceptions.RequestError: RequestError(400, 'search_phase_execution_exception', 'No mapping found for [@timestamp] in order to sort on')"], 
'data': {'rule': 'test', 
'query': {'query': {'bool': {'filter': {'bool': {'must': [{'range': {'@timestamp': {'gt': '2022-03-10T09:03:31.454969Z', 'lte': '2022-03-10T09:08:34.454969Z'}}}, \
 {'query_string': {'query': '_type: pi_endpointincidentlogdata'}}, \
 {'query_string': {'query': 'elog_logtype: 1'}}, {'query_string': 
 {'query': 'elog_loggroup: 32 OR elog_loggroup: 64'}}, {'query_string': {'query': '_exists_ : elog_patterinfo.elog_patternname'}}, \
 {'range': {'elog_createtime': {'gte': '2022-01-03 10:33:00', 'lte': '2022-01-03 10:37:00'}}}]}}}},  
 'sort': [{'@timestamp': {'order': 'asc'}}]}}}

我无法理解这个错误,因为我没有在过滤器中声明@timestamp 范围和排序。

这是我的规则文件

> name: test 
> type: frequency 
> index: pi_202202* 
> num_events: 1 
> timeframe: 
>   minutes: 5
> 
> filter:
>       - query:
>           query_string:
>             query: "_type: pi_endpointincidentlogdata"
>       - query:
>           query_string:
>             query: "elog_logtype: 1"
>       - query:
>           query_string:
>             query: "elog_loggroup: 32 OR elog_loggroup: 64"
>       - query:
>           query_string:
>             query: "_exists_ : elog_patterinfo.elog_patternname"
>       - range:
>           elog_createtime:
>             gte: "2022-01-03 10:33:00"
>             lte: "2022-01-03 10:37:00"
> 
> alert:
> - "email"

我该如何解决这个问题?

这是因为 ElastAlert 默认使用 @timestamp field 对数据进行排序。

您可以在 timestamp_field 配置中更改它并使用数据中存在的另一个字段。

我最近遇到了这个问题。 elasticalert 正在尝试加载以下映射 =>

find / -name es_mappings

  • elastalert_error.json
  • elastalert.json
  • elastalert_status.json
  • 过去_elastalert.json
  • silence.json

问题出在 index_template。当 Elastalert 试图创建自己的映射时,它与 index_template 冲突并且无法添加自己的映射。删除相关的 index_template 和 re-running elasticalert-create-index 命令修复了问题。