elasticsearch 使用纳秒时间戳将文档批量注入到弹性搜索
我正在尝试使用ElasticSearch 7.1(实际上是7.0之后)提供的最新纳秒支持。不知道如何正确地执行此操作 在7.0之前,ElasticSearch只支持毫秒的时间戳,我使用_bulkAPI注入文档
elasticsearch 使用纳秒时间戳将文档批量注入到弹性搜索,
elasticsearch,kibana,aws-elasticsearch,
elasticsearch,Kibana,Aws Elasticsearch,我正在尝试使用ElasticSearch 7.1(实际上是7.0之后)提供的最新纳秒支持。不知道如何正确地执行此操作 在7.0之前,ElasticSearch只支持毫秒的时间戳,我使用_bulkAPI注入文档 #将大量博文发送到弹性搜索 def es_批量插入(日志行,批量大小=1000): headers={'Content-Type':'application/x-ndjson'} 而日志行: 批次,日志行=日志行[:批次大小],日志行[批次大小:] 批处理='\n'。加入([x.es\U
#将大量博文发送到弹性搜索
def es_批量插入(日志行,批量大小=1000):
headers={'Content-Type':'application/x-ndjson'}
而日志行:
批次,日志行=日志行[:批次大小],日志行[批次大小:]
批处理='\n'。加入([x.es\U post\U批处理中x的有效负载])+'\n'
request=AWSRequest(method='POST',url=f'{ES_HOST}/_bulk',data=batch,headers=headers)
SigV4Auth(boto3.Session().get_-credentials(),'es','eu-west-1')。添加_-auth(请求)
session=urlib3session()
r=会话.send(请求.prepare())
如果r.状态\ U代码>299:
引发异常(f'从Elasticsearch:{r.text}'收到错误响应)
日志索引是每天生成的
#例如:
#log-20190804
#log-20190805
def es_索引(自):
当前日期=datetime.strftime(datetime.now(),“%Y%m%d”)
返回f'{self.name}-{current_date}'
时间戳以纳秒为单位“2019-08-07T23:59:01.193379911Z”,它通过7.0之前的Elasticsearch自动映射到日期类型
"timestamp": {
"type": "date"
},
现在我想将timestamp字段映射到“date\u nanos”类型。从中,我认为在调用ES_bulk_insert()函数上载文档之前,需要创建具有正确映射的ES索引
GET https://{es_url}/log-20190823
If not exist (return 404)
PUT https://{es_url}/log-20190823/_mapping
{
"properties": {
"timestamp": {
"type": "date_nanos"
}
}
}
...
call es_bulk_insert()
...
我的问题是:1.如果我不重新映射旧数据(例如:log-20190804),那么时间戳将有两个映射(data vs data_nano),当我使用Kibana搜索日志时会有冲突吗?
2.我没有看到很多关于使用这个新功能的帖子,这会对性能造成很大影响吗?有人在prod中使用过这个吗?
3.不确定是否可以按纳秒正确排序,将尝试
谢谢 你是对的:对于
date\u nanos
你需要显式地创建映射-否则动态映射将返回到date
Kibana在7.3中一般支持date\u nano
,这一点也是正确的;虽然相关的票是IMO
然而,排序还不能正常工作。这是因为date
(毫秒精度)和date\u nanos
(纳秒精度)都表示为从epoche开始算起的很长时间。因此,第一个值为1546344630124,第二个值为1546344630123456789-这并没有给出预期的排序顺序
在Elasticsearch中,有一个用于搜索“数值类型”:“date\u nanos”
,可以将两者转换为纳秒精度,从而正确排序(在7.2中添加)。但是,该参数尚未在Kibana中使用。我有
对于性能:最新版本。显然,这会带来开销(包括文档大小),因此,如果您确实需要,我只会使用更高的精度。谢谢您提出一个有趣的问题。我现在把它变成了一篇博客文章,里面有一些额外的信息,因为我可以看到这个问题再次出现: