gpt4 book ai didi

java - 在elastic或mongodb中存储128位数字

转载 作者:行者123 更新时间:2023-11-30 01:55:42 30 4
gpt4 key购买 nike

我的设计要求是能够以十进制格式保存 IPv6 地址。在java中,我有可以容纳40位数字的BigInteger,Oracle通过JDBC驱动程序就可以很好地获取它。

如何在 Elastic 或 Mongo DB 中执行此操作。据我所知,elastic 或 mongodb 支持的最大数字是 64 位 bigint 数字。例如如果我转换

 FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF, 

十进制格式为

 340282366920938463463374607431768211455 (total of 39 digits). 

在elastic或mongo中解决这个问题的最佳方法是什么?我需要能够在此字段上运行范围函数(=、<、<=、>=)来搜索文档。

最佳答案

从 Elasticserch 5.0 开始,有一个 ip field type ,同时支持 IPv4 和 IPv6。

我建议在 Elasticsearch 中使用这个,而不是进行整数/字符串转换。

这样做的原因是它天然支持子网样式查询,我认为这非常方便。例如

GET index/_search
{
“query”: {
“term”: {
“ip_addr”: “2001:db8::/48”
}
}
}

此字段类型也支持范围查询

关于java - 在elastic或mongodb中存储128位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54630995/

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