Я пытался использовать logstash для запроса событий эластичного поиска, чтобы я мог заполнить некоторые поля более удобочитаемыми данными. У меня есть один индекс для имен людей, который я пытаюсь использовать для улучшения других полей при индексировании других видов событий.
Я уверен, что с моей строкой запроса что-то не так, но я не знаючто. Я просто продолжаю получать это предупреждение, и тег person_query_failed :
[2019-10-03T10: 38: 52,759] [WARN] [logstash.filters.elasticsearch] Не удалось выполнить запросasticsearch для предыдущего события {: index => «logstash-people»,: error => «Неожиданный символ ('}' (код 125)): ожидал двоеточие для разделения имени поля и значения \ n в [Source: (byte»[]) \ "{\ n \" query \ ": {\ n \" query_string \ ": {\" query \ ": {\" id: 109 \ "}} \ n}, \ n \" _ source \ "": {\" cn \ "} \ n} \"; строка: 3, столбец: 42] "}
[2019-10-03T10: 38: 52,760] [WARN] [logstash.filters. эластичный поиск] Не удалось запросить эластичный поиск для предыдущего события {: index => «logstash-people»,: error => «Неожиданный символ ('}' (код 125)): ожидал двоеточие для разделения имени поля и значения \ n в[Источник: (byte []) \ "{\ n \" query \ ": {\ n \" query_string \ ": {\" query \ ": {\" id: 4 \ "}} \ n}, \n \ "_ source \": {\ "cn \"} \ n} \ "; строка: 3, столбец: 40]"}
[2019-10-03T10: 38: 52,764] [ПРЕДУПРЕЖДЕНИЕ][logstash.filters.elasticsearch] Не удалось запросить эластикипоиск предыдущего события {: index => "logstash-people",: error => "Неожиданный символ ('}' (код 125)): ожидалось, что двоеточие разделяет имя и значение поля \ n в [Source: (byte")[]) \ "{\ n \" query \ ": {\ n \" query_string \ ": {\" query \ ": {\" id: 49 \ "}} \ n}, \ n \" _ источник \": {\" cn \ "} \ n} \";строка: 3, столбец: 41] "}
Это мой шаблон запроса person_query.json :
{
"query": {
"query_string": { "query": { "id:%{[dn_people]}" } }
},
"_source": { "cn" }
}
А вот моя конфигурация фильтра logstash:
filter {
elasticsearch {
hosts => [ "https://localhost:9200" ]
index => "logstash-people"
query_template => "/path/to/person_query.json"
fields => { "cn" => "person" }
user => admin
password => password
ca_file => "/etc/elasticsearch/root-ca.pem"
tag_on_failure => person_query_failed
}
}
При просмотре журналов предупреждений кажется, что, по крайней мере, сама строка запроса работает должным образом: "id:% {[dn_people]}" переводится в \ "id: 109 \" , \ "id: 4 \" и \ "id: 125 \" соответственно.
При написании моегозапрос, я смотрю на это: https://discuss.elastic.co/t/how-to-query-elasticsearch-and-take-some-fields-from-old-data/75300/3
Может ли кто-нибудь помочь и подтолкнуть меня в правильном направлении, чтобы исправить это?
Я использую Opendistro для Elasticsearch.