ElasticSearch REST API Агрегирует текстовое поле

#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, я получал ошибки синтаксического анализа. Действительно не уверен, где определить сопоставления в запросе; Я пишу вслепую здесь без каких-либо рекомендаций по синтаксису.