Я пытаюсь сделать что-то, что должно быть простым, но я не могу заставить его работать. Я посмотрел и обыскал все, чтобы найти подробную информацию о c search :: elsticsearch. Я могу только найти CPAN do c, и что касается поиска, он едва упоминается. Я ищу здесь и не могу найти повторяющийся вопрос.
У меня есть эластичный поиск и бит файла. Filebeat отправляет системный журнал вasticsearch. Я просто хочу искать сообщения с соответствующим текстом и диапазоном дат. Я могу найти сообщения, но когда я пытаюсь добавить диапазон дат, запрос не выполняется. Вот запрос от kibana dev tools.
GET _search
{
"query": {
"bool": {
"filter": [
{ "term": { "message": "metrics" }},
{ "range": { "timestamp": { "gte": "now-15m" }}}
]
}
}
}
Я не получаю именно то, что ищу, но ошибки нет.
Вот моя попытка с perl
my $results=$e->search(
body => {
query => {
bool => {
filter => {
term => { message => 'metrics' },
range => { timestamp => { 'gte' => 'now-15m' }}
}
}
}
}
);
Это ошибка.
[Request] ** [http://x.x.x.x:9200]-[400]
[parsing_exception]
[range] malformed query, expected [END_OBJECT] but found [FIELD_NAME],
with: {"col":69,"line":1}, called from sub Search::Elasticsearch::Role::Client::Direct::__ANON__
at ./elasticsearchTest.pl line 15.
With vars: {'body' => {'status' => 400,'error' => {
'root_cause' => [{'col' => 69,'reason' => '[range]
malformed query, expected [END_OBJECT] but found [FIELD_NAME]',
'type' => 'parsing_exception','line' => 1}],'col' => 69,
'reason' => '[range] malformed query, expected [END_OBJECT] but found [FIELD_NAME]',
'type' => 'parsing_exception','line' => 1}},'request' => {'serialize' => 'std',
'path' => '/_search','ignore' => [],'mime_type' => 'application/json',
'body' => {
'query' => {
'bool' =>
{'filter' => {'range' => {'timestamp' => {'gte' => 'now-15m'}},
'term' => {'message' => 'metrics'}}}}},
'qs' => {},'method' => 'GET'},'status_code' => 400}
Может кто-нибудь помочь мне разобраться, как искать с помощью модуля search ::asticsearch perl?