首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch“data”:{“type”:“float”}查询返回不正确的结果

Elasticsearch“data”:{“type”:“float”}查询返回不正确的结果
EN

Stack Overflow用户
提问于 2022-03-22 12:37:40
回答 2查看 220关注 0票数 0

我有一个如下所示的查询,当date_partition字段为“=> "float”时,它返回类似于20220109、20220108、20220107的查询。当字段"type“=> "long”时,它只返回20220109查询。这就是我想要的。

下面的每个查询都会返回结果,就好像查询20220119已经发送一样。-> 20220109,20220108,20220107

代码语言:javascript
复制
PUT date
{
  "mappings": {
    "properties": {
      "date_partition_float": {
        "type": "float"
      },
      "date_partition_long": {
        "type": "long"
      }
    }
  }
}
POST date/_doc
{
  "date_partition_float": "20220109",
  "date_partition_long": "20220109"
}
#its return the query
GET date/_search
{
  "query": {
    "match": {
      "date_partition_float": "20220108"
    }
  }
}
#nothing return
GET date/_search
{
  "query": {
    "match": {
      "date_partition_long": "20220108"
    }
  }
}

这是一个错误还是浮点类型是这样工作的?加载到Elasticsearch (比如dd-1,dd-2)(每天20 gb的pri碎片大小)(总共15 TB)的2年数据中,什么是改变这个字段类型的最好方法?我的映射中有5种浮动类型,最快的方法是改变所有这些类型。注意:在我看来,我有以下的解决方案,但恐怕很慢

  • 更新
  • 再索引API
  • 运行时搜索请求(特别是这次)谢谢!

EN

回答 2

Stack Overflow用户

发布于 2022-03-22 15:18:07

date_partition字段应该有带有format=yyyyMMdddate类型,这是唯一可以使用的类型,而不是long,甚至更糟的float

代码语言:javascript
复制
PUT date
{
  "mappings": {
    "properties": {
      "date_partition": {
        "type": "date",
        "format": "yyyyMMdd"
      }
    }
  }
}

查询20220108并在结果中返回20220109文档是不符合逻辑的。

使用date类型还可以使用适当的基于时间的range查询,并在数据上创建date_histogram聚合。

您可以使用适当的类型重新创建索引并重新索引数据,或者向现有索引中添加新字段并通过查询更新它。这两个选项都是有效的。

票数 1
EN

Stack Overflow用户

发布于 2022-04-18 13:13:50

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71572203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档