Я обычно вставляю данные (логи) вasticsearch через плагин logstash.Затем я могу выполнить их поиск в kibana.
Однако, если я попытаюсь программно преобразовать данные вasticsearch (чтобы пропустить filebeat и logstash), я не смогу найти данные в kibana.
Это то, что я тестировал:
from elasticsearch import Elasticsearch
es = Elasticsearch(["XXX"], ...)
doc = {
"@version": 1,
"@timestamp": datetime.now(),
"timestamp": datetime.now(), # Just in case this is needed too
"message": "test message"
}
res = es.index(
index="foobar-2019.05.13", doc_type='whatever', id=3, body=doc,
refresh=True
)
# Doc is indexed by above code, as proved by
# es.search(
# index="foobar-*", body={"query": {"match_all": {}}}
#)
Я добавил шаблон индекса `foobar- *` `в kibana в« Шаблон индекса -> Создать шаблон индекса ».Затем я могу использовать страницу «обнаружить» для поиска документов в этом индексе.Но документы, найденные кибаной, не найдены, даже если они существуют в эластичном поиске.
Чего мне не хватает?Есть ли какие-либо сопоставления, которые должны быть настроены для индекса?
(примечание: использование версий 6.x)
ОБНОВЛЕНИЕ: пример индексации документа и сопоставление индекса
# Example of doc indexed
{'_index': 'foobar-2019.05.13', '_type': 'doc', '_id': '41', '_score': 1.0,
'_source': {'author': 'foobar', 'message': 'karsa big and crazy. icarium crazy. mappo big.',
'timestamp': '2019-05-13T15:52:19.857898',
'@version': 1, '@timestamp': '2019-05-13T15:52:19.857900'}}
# mapping of foobar-2019.05.13'
{
"mapping": {
"doc": {
"properties": {
"@timestamp": {
"type": "date"
},
"@version": {
"type": "long"
},
"author": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"message": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"timestamp": {
"type": "date"
}
}
}
}
}