首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将有大整数列的数据导入弹性搜索?

问如何将有大整数列的数据导入弹性搜索?
EN

Stack Overflow用户
提问于 2019-04-10 19:50:12
回答 1查看 98关注 0票数 0

我在PostgreSQL中有一个表,列的类型是numeric(40, 0)。

我希望能在这个领域进行过滤和排序。

问题是,当数据从PostgreSQL查询,然后转换为json时,大整数值被转换为"text",并在弹性搜索中被识别为“文本”类型,不能用于过滤和排序。

弹性搜索的 type只能支持最多10^20的整数,但我想支持最多10^40的整数。

如何导入这些数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-10 20:46:40

虽然我没有在10 duodecillion+范围内添加数字支持的解决方案,但我想指出,在使用动态映射时,您要发送的数字字符串被存储为text和keyword数据类型。因此,如果要执行排序或筛选,可以对keyword字段进行操作。

例如:

代码语言:javascript
复制
PUT random_big

POST random_big/_doc
{
  "num": "10000000000000000000000000000000000000000"
}
POST random_big/_doc
{
  "num": "10000000000000000000000000000000000000001"
}
POST random_big/_doc
{
  "num": "10000000000000000001000000000000000000000"
}

检查映射(GET random_big/_mapping)显示:

代码语言:javascript
复制
{
  "random_big" : {
    "mappings" : {
      "_doc" : {
        "properties" : {
          "num" : {
            "type" : "text",
            "fields" : {
              "keyword" : {
                "type" : "keyword",
                "ignore_above" : 256
              }
            }
          }
        }
      }
    }
  }
}

可以按以下方式进行排序:

代码语言:javascript
复制
GET random_big/_search
{
  "sort": [
    {
      "num.keyword": {
        "order": "asc"
      }
    }
  ]
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55620306

复制
相关文章

相似问题

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