2015-08-13 2 views
4

Я пытаюсь добавить временную метку к моим данным, добавить индекс elamicsearch-py, а затем отобразить данные с помощью kibana.Добавить временную метку в ElasticSearch с помощью Elasticsearch-py с использованием Bulk-API

Мои данные отображаются в kibana, но моя временная метка не используется. Когда я перехожу на вкладку «Открытие» после настройки моего шаблона индекса, я получаю 0 результатов (да, я пытался настроить время поиска).

Вот что мой насыпной индекс JSON выглядит следующим образом:

{'index': 
     {'_timestamp': u'2015-08-11 14:18:26', 
      '_type': 'webapp_fingerprint', 
      '_id': u'webapp_id_redacted_2015_08_13_12_39_34', 
      '_index': 'webapp_index' 
     } 
} 

****JSON DATA HERE*** 

Это будет принято elasticsearch и импортируется в Kibana, но поле _timestamp фактически не будет индексироваться (он появляется в выпадающего списка при настройке шаблона индекса в поле «Имя поля времени»).

Я также попытался форматирования metaFields так:

{'index': { 
      '_type': 'webapp_fingerprint', 
      '_id': u'webapp_id_redacted_2015_08_13_12_50_04', 
      '_index': 'webapp_index' 
      }, 
      'source': { 
         '_timestamp': { 
            'path': u'2015-08-11 14:18:26', 
            'enabled': True, 
            'format': 'YYYY-MM-DD HH:mm:ss' 
            } 
        } 
} 

Это также не работает.

Наконец, я попытался включить поле _timestamp в индекс и применить формат, но у меня возникла ошибка с elasticsearch.

{'index': { 
      '_timestamp': { 
          'path': u'2015-08-11 14:18:26', 
          'enabled': True, 
          'format': 'YYYY-MM-DD HH:mm:ss' 
         }, 
      '_type': 'webapp_fingerprint', 
      '_id': u'webapp_id_redacted_2015_08_13_12_55_53', 
      '_index': 'webapp_index' 
      } 
} 

Ошибка:

elasticsearch.exceptions.TransportError: 
TransportError(500,u'IllegalArgumentException[Malformed action/metadata 
line [1], expected a simple value for field [_timestamp] but found [START_OBJECT]]') 

Любой кто-то помощь может обеспечить было бы весьма признателен. Прошу прощения, если я недостаточно объяснил проблему. Дайте мне знать, если мне нужно уточнить больше. Благодарю.

ответ

5

Исправлена ​​проблема. В принципе, мне нужно было добавить сопоставления для метки времени, когда я создал индекс.

request_body = { 
    "settings" : { 
     "number_of_shards": 1, 
     "number_of_replicas": 0 
    }, 
    "mappings" : { 
     "_default_":{ 
      "_timestamp":{ 
       "enabled":"true", 
       "store":"true", 
       "path":"plugins.time_stamp.string", 
       "format":"yyyy-MM-dd HH:m:ss" 
      } 
     } 
    } 
} 
print("creating '%s' index..." % (index_name)) 
res = es.indices.create(index = index_name, body = request_body) 
print(" response: '%s'" % (res)) 
Смежные вопросы