elasticsearch - ElasticSearch 无法识别日期类型,显示为字符串类型
问题描述
弹性搜索版本:6.3
映射定义:
ES_DOCTYPE = {
"properties": {
"UsageEndDate": {"type": "date", "format": "YYYY-MM-dd HH:mm:ss"},
"UsageStartDate": {"type": "date", "format": "YYYY-MM-dd HH:mm:ss"}
}
}
json数据:
{
'UsageEndDate': '2018-08-01 02:00:00',
'UsageStartDate': '2018-08-01 01:00:00'
}
{
'UsageEndDate': '2018-08-02 02:00:00',
'UsageStartDate': '2018-08-02 01:00:00'
}
创建索引:
es.index(index="test", doc_type='test', body=ES_DOCTYPE)
发送数据:
helpers.streaming_bulk(es, documents(), index="test", doc_type='test', chunk_size=1000)
嗨,我做了我的工作谷歌搜索,但也许关键字太笼统,所以我没有得到太多。
当我阅读文档时,ES 应该能够自动找到日期格式,但即使我添加了映射定义,那些UsageStartDate
或UsageEndDate
仍然显示为string
当我在 Kibana 中查看它们时。
有什么我想念的吗?
非常感谢你 :)
解决方案
我自己想通了,
dynamicTemplate = {
"properties": {
"UsageEndDate": {"type": "date", "format": "YYYY-MM-dd HH:mm:ss"},
"UsageStartDate": {"type": "date", "format": "YYYY-MM-dd HH:mm:ss"}
}, "dynamic_templates": [
{
"notanalyzed": {
"match": "*",
"match_mapping_type": "string",
"mapping": {
"type": "string",
"index": "not_analyzed"
}
}
}
]
}
并先放映射定义,然后将数据发送到 ElasticSearch
es.indices.put_mapping(index="test", doc_type='test', body={'test': dynamicTemplate})
es.index(index='test-index', doc_type='tweet', body=ES_DOCTYPE)
推荐阅读
- javascript - ExpertPDF HtmlToPDF 在转换时不执行 javascript
- c# - How can I await task in Task
function? - terraform - Azure APIM 定义的 Terrform 模块
- javascript - Select2 选中后如何给输入框添加css样式
- amazon-web-services - 是否有可能在 IGW 和需要公共 IP 的 EC2 路由器之间在 AWS 中引入数据包丢失和延迟?
- ruby-on-rails-4 - 如何在我的 Rails 控制台中查看 Rails 审计记录?
- python - 如何使用 plotly imshow 设置 xlim/ylim?
- woocommerce - WooCommerce:在结帐页面中获取当前送货地址
- c# - WPF 将对象从窗口的用户控件传递到另一个窗口的用户控件
- javascript - Github pages not found (FIle not found) 404