我正在尝试做一些事情,这应该相当容易。但无法实现。长话短说我使用ELK,Logstash正在为我插入所有文档,并使用适当的过滤器。
现在我需要手动(通过NodeJS)向ES插入数据,我的日期类型有小问题。理想情况下,我想发送时间戳字段,其中包含我的NodeJS应用程序生成的日期,并完成它。 Logstash以同样的方式进行输入。我很乐意避免在索引上设置映射。即使没有索引,我确信Logstash即时生成一个。它就是一个。
好吧,如果我必须设置自己的映射,那么我该怎么做呢?
这是我到目前为止所尝试的: 使用ElasticSearch for NodeJS
代码:
saveIndex (lt, gte, indexName) {
//lt --> 2018-01-31T12:52:05+01:00
return client.index({
'index': 'healthcheck',
'type': 'string',
'timestamp': lt,
'body': {
'message': 'Message in a bottle',
'anothertest': 'this is just a test'
}
});
}
当我运行该代码时,我的索引与正文字段一起创建。按预期工作,但我没有时间戳值。我预计它会自动创建。阅读后,我看到我需要创建一个带字段的映射 - >日期。我这样做了:
PUT healthcheck
{
"mappings": {
"my_type": {
"properties": {
"timestamp": {
"type": "date",
"format": "yyyy-MM-dd"
}
}
}
}
}
我在Kibana中运行后,我看到我有时间戳字段,但它说它不是可搜索的。我删除了索引。运行映射语句。然后我运行代码来生成一些文档,但仍然没有。
我做错了什么?
答案 0 :(得分:1)
我认为您需要编写映射,以便将字段编入索引。
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-index.html
(它说真的是默认值,但它也说如果它不是不可搜索的,那么这是我最好的猜测)
或者,您可以尝试快速解决方案(不是保证修复),在Kibana中转到管理/索引模式/您的索引模式,并在右上角点击刷新按钮。那应该为你索引。