簡體   English   中英

在Elastic或MongoDB中存儲128位數字

[英]Storing 128bit numbers in elastic or mongodb

我的設計要求是能夠以十進制格式保存IPv6地址。 在Java中,我有BigInteger可以容納40位數字,Oracle可以通過JDBC驅動程序很好地使用它。

如何在Elastic或Mongo DB中做到這一點。 據我了解,elastic或mongodb支持的最大數字是64位bigint數字。 例如,如果我轉換

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

十進制格式為

 340282366920938463463374607431768211455 (total of 39 digits). 

解決彈性或蒙哥幣問題的最佳方法是什么? 我需要能夠在此字段上運行范圍函數(=,<,<=,> =)以搜索文檔。

從Elasticserch 5.0開始,有一個ip 字段類型 ,它同時支持IPv4和IPv6。

我建議在Elasticsearch中使用它,而不是執行整數/字符串轉換。

原因是它自然支持子網樣式查詢,我認為這非常方便。 例如

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

此字段類型也支持范圍查詢

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM