欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

es如何存儲大json字段的

李中冰2年前9瀏覽0評論

ES是一個流行的開源分布式搜索和分析引擎,它的存儲功能可以存儲大量的數據。其中一個常見的問題是如何存儲大Json字段。

首先,我們需要意識到Json數據類型可以包含很多不同的數據結構。這意味著在存儲和搜索Json數據時,我們需要能夠使用其內部字段來過濾和查詢文檔數據。對于大Json字段的存儲,這可能會導致性能和存儲方面的挑戰。

在ES中,我們可以使用child/parent數據關系模型來解決這個問題。這個模型允許我們將Json數據分成兩部分:一個父文檔和一個或多個子文檔。父文檔包含基本信息,而子文檔則包含大Json字段中的數據。

PUT /myindex
{
"mappings": {
"parenttype": {},
"childtype": {
"_parent": { 
"type": "parenttype" 
}
}
}
}

這里我們創建了兩個類型:一個父類型和一個子類型,我們為子類型設置了_parent字段。這意味著子文檔將與父文檔建立關系。

接下來,我們需要在索引中為文檔定義父子關系:

PUT /myindex/parenttype/1
{
"name": "Parent Document"
}
PUT /myindex/childtype/1?parent=1
{
"big_json_field": {
"key1": "value1",
"key2": "value2",
"key3": "value3",
...
"keyN": "valueN"
}
}

我們在這里插入了一個父文檔和一個子文檔,并使用"parent"屬性來定義它們之間的父子關系。

一旦數據被索引,我們可以使用子文檔的大小來限制查詢數據:

GET /myindex/childtype/_search
{
"query": {
"has_parent": {
"parent_type": "parenttype",
"query": {
"match_all": {}
},
"inner_hits": {
"_source": {
"include": ["big_json_field"]
},
"size": 10
}
}
}
}

這個查詢使用了has_parent查詢來查找與父文檔匹配的所有子文檔。我們可以在inner_hits中指定_sub要返回的子字段的選項。

在ES中存儲大Json字段并不是一個容易的任務,但使用child/parent關系模型可以幫助我們優化性能和存儲。