![](/img/trans.png)
[英]How to get count of documents that would be added if one selects another aggregation options of an array-field in elastic search
[英]How to efficiently get only one field of the documents for elastic search
我是Elasticsearch的新手,並且遇到了一些技術困難。 目前,我有按小時索引存儲的文檔,它們是時間序列數據。 我要弄清楚的是如何僅有效地提取key
字段值,該值定義為"key": { "type": "long" }
。 我最初嘗試的是朴素的方法,該方法可滾動瀏覽所有索引並提取字段,但顯然並不能很快完成,每個小時的索引大約有1000萬個文檔,並且滾動3個索引已經花費了很長時間。
然后,我進入術語聚合 ,試圖使key
段成為聚合術語:
"aggregations": {
"test_group": {
"terms": {
"field": "key",
"size": 100000
}
}
}
這給了我更好的性能,但是當用戶嘗試搜索歷史記錄時,它還不足以作為實時系統,因為key
是一個高基數字段。 一些粗略的基准測試告訴我:
size = 50k, indices = 4, time range = 3hrs: 7.1s
size = 100k, indices = 4, time range = 3hrs: 7.669s
size = 1m, indices = 4, time range = 2hrs: 12.669s
size = 1m, indices = 4, time range = 3hrs: 14.669s
這還沒有結束,因為我正在使用彈性搜索go庫來解析輸出並進行一些處理,這給整個響應增加了不平凡的時間。
我的問題是:這已經是最好的ES可以做到的嗎? 還有其他我想念的方式嗎? 我目前在ES 5.6和3個群集節點上,全部使用Amazon i3-4xl實例。 謝謝。
如果我正確理解了您的問題,那么您正在嘗試從文檔中檢索一個稱為“鍵”的特定字段,並且我認為您正在返回的文檔中還有其他字段是您不關心的?
如果是這樣,請嘗試以下操作:
GET /_search
{
"_source": {
"includes": ["key"]
}
}
我不確定您要實現的目標,但是從文檔中檢索一個字段通常需要將store參數設置為true,因此不需要從_source字段解析此字段。
查看文件: https : //www.elastic.co/guide/zh-CN/elasticsearch/reference/current/number.html#number-params
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.