gpt4 book ai didi

json - 日期字段上的Elasticsearch范围查询始终给出空结果

转载 作者:行者123 更新时间:2023-12-03 02:23:27 28 4
gpt4 key购买 nike

Elasticsearch v6.8,我正在尝试进行基本查询以检索具有特定范围内日期字段的文档。但是无论我指定哪个范围,我总是得到空结果。

这是一个文档示例:

{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 4,
"successful" : 4,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 56657,
"max_score" : 1.0,
"hits" : [
{
"_index" : "myindex",
"_type" : "mydoc",
"_id" : "sRUe8mIB6XnnZk5zfobC",
"_score" : 1.0,
"_source" : {
"createdAt" : "2018-04-19T12:46:03Z",
"id" : 10465929,
"type" : 2
}
}
]
}
}

我还尝试了对 documentation进行略微修改的查询,以获取具有今天之前的日期的文档...但结果相同(空):
GET /myindex/mydoc/_search
{
"query": {
"range" : {
"createdAt": {
"lt" : "now/d"
}
}
}
}
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 4,
"successful" : 4,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 0,
"max_score" : null,
"hits" : [ ]
}
}

也尝试使用 POST代替 GET,结果相同。字段 createdAt在索引中肯定是 date类型(例如 2018-04-19T12:46:03Z格式)。我究竟做错了什么?

最佳答案

这是不可复制的-以下内容可以正常工作:

DELETE myindex          // careful here

POST myindex/_doc
{
"createdAt": "2018-04-19T12:46:03Z",
"id": 10465929,
"type": 2
}

GET myindex/_search
{
"query": {
"range": {
"createdAt": {
"lt": "now/d"
}
}
}
}

以下是否引发异常?
GET myindex/_search
{
"script_fields": {
"formatted_date": {
"script": {
"source": """
LocalDateTime.ofInstant(
Instant.ofEpochMilli(doc['createdAt'].value.millis),
ZoneId.of('Europe/Vienna')
).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
"""
}
}
}
}

如果您尝试添加带有 random_id的文档,然后将其删除,该怎么办?
POST myindex/mydoc/random_id
{

"createdAt": "2018-04-19T12:46:03Z",
"id": "random_id",
"type": 2
}

并再次运行搜索。

关于json - 日期字段上的Elasticsearch范围查询始终给出空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61762173/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com