インデックスには60M個のドキュメントがあります。 4ノードのクラスタでホストされます。Vespaで集約を高速化する方法は?
構成がドキュメント上の集計に最適化されていることを確認します。
これはサンプルクエリです:
select * from sources * where (sddocname contains ([{"implicitTransforms": false}]"tweet")) | all(group(n_tA_c) each(output(count() as(count))));
フィールドn_tA_cは、文字列の配列が含まれています。
{
"fields": {
"add_gsOrd": 63829,
"documentid": "id:firehose:tweet::815347045032742912",
"foC": 467,
"frC": 315,
"g": 0,
"ln": "en",
"m": "ya just wants some fried rice",
"mTp": 2,
"n_c_p": [],
"n_tA_c": [
"fried",
"rice"
],
"n_tA_s": [],
"n_tA_tC": [],
"sN": "long_delaney1",
"sT_dlC": 0,
"sT_fC": 0,
"sT_lAT": 0,
"sT_qC": 0,
"sT_r": 0.0,
"sT_rC": 467,
"sT_rpC": 0,
"sT_rtC": 0,
"sT_vC": 0,
"sddocname": "tweet",
"t": 1483228858608,
"u": 377606303,
"v": "false"
},
"id": "id:firehose:tweet::815347045032742912",
"relevance": 0.0,
"source": "content-root-cluster"
}
n_tA_cモード高速検索、簡単な用語集約クエリは20代に戻ってこない
field n_tA_c type array<string> {
indexing: summary | attribute
attribute: fast-search
}
を持つ属性である:これはサンプル文書です。タイムアウト。この待ち時間を短縮するために必要な追加のチェックリストは何ですか?
$ curl 'http://localhost:8080/search/?yql=select%20*%20from%20sources%20*%20where%20(sddocname%20contains%20(%5B%7B%22implicitTransforms%22%3A%20false%7D%5D%22tweet%22))%20%7C%20all(group(n_tA_c)%20each(output(count()%20as(count))))%3B' | python -m json.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 270 100 270 0 0 13 0 0:00:20 0:00:20 --:--:-- 67
{
"root": {
"children": [
{
"continuation": {
"this": ""
},
"id": "group:root:0",
"relevance": 1.0
}
],
"errors": [
{
"code": 12,
"message": "Timeout while waiting for sc0.num0",
"source": "content-root-cluster",
"summary": "Timed out"
}
],
"fields": {
"totalCount": 0
},
"id": "toplevel",
"relevance": 1.0
}
}
これらのノードは、AWSが大きな箱をi3.4xです。(16個のコア、120ギガバイト)私は私が愚かな何かが足りないかもしれません
を。
あなたは本当にすべてのユニークな値とそのカウントを取得したいですか?あなたのグループ化式はmax()でグループの数を制限しないので、すべてを得ることができます。 – jkb