#elasticsearch #curl #kibana
Вопрос:
Поэтому я совершенно новичок в ElasticSearch/Kibana, пытаюсь создать простую команду Curl для доступа к API REST от Elastic и возврата количества журналов, содержащих заданную строку текста. Но я получаю следующую ошибку:
«Текстовые поля не оптимизированы для операций, требующих данных полей для каждого документа, таких как агрегирование и сортировка, поэтому по умолчанию эти операции отключены. Пожалуйста, используйте вместо этого поле с ключевым словом. В качестве альтернативы установите значение fielddata=true в [отметка времени], чтобы загрузить данные поля, отключив инвертирование инвертированного индекса. Обратите внимание, что для этого может потребоваться значительная память».
Мой код выглядит следующим образом:
{
"size": 0,
"query": {
"range": {
"timestamp": {
"gte": "2021-06-15",
"lte": "2021-06-23"
}
}
},
"aggs": {
"hit_count_per_day": {
"date_histogram": {
"field": "timestamp",
"calendar_interval": "day"
}
}
}
}
Где я должен добавлять это значение «fielddata=true», указанное в ошибке? Может ли кто-нибудь указать мне на справочный документ для синтаксиса API ElasticSearch?
Комментарии:
1. не могли бы вы поделиться своим отображением индекса ?
2. @ESCoder Я не уверен в сопоставлении индексов-я использую поиск, созданный кем-то другим. Шаблон индекса-c0001_log-*
Ответ №1:
Основываясь на ошибке, которую вы получаете, кажется, что timestamp
поле имеет text
тип. Вы не можете выполнить агрегацию text
полей типа. Поскольку вы используете date_histogram
агрегацию, вы должны использовать timestamp
поле date
типа.
Измените сопоставление индексов, как показано ниже
{
"mappings": {
"properties": {
"timestamp": {
"type": "date"
}
}
}
}
Комментарии:
1. @Фил Клелланд, пожалуйста, просмотрите ответ и дайте мне знать, решило ли это вашу проблему ?
2. Извините @ESCoder, я получал ошибки синтаксического анализа. Действительно не уверен, где определить сопоставления в запросе; Я пишу вслепую здесь без каких-либо рекомендаций по синтаксису.