Page MenuHomePhabricator
Paste P35367

top pages by source size from all elasticsearch indices query
ActivePublic

Authored by EBernhardson on Oct 5 2022, 6:57 PM.
{
"query": {
"match_all": {}
},
"aggs": {
"wikis": {
"terms": {
"size": 5000,
"field": "_index"
},
"aggs": {
"largest_pages": {
"top_hits": {
"_source": {
"includes": [
"text_bytes"
]
},
"size": 4,
"sort": {
"_script": {
"type": "number",
"order": "desc",
"script": {
"lang": "painless",
"source": "int fieldLength(def source, String field) { if (!source.containsKey(field)) { return 0; } return valueLength(source.get(field));}int valueLength(def value) { if (value == null) { return 0; } else if (value instanceof List) { int size = 0; for (def item : value) { size += valueLength(item); } return size; } else if (value instanceof String) { return value.length(); } else if (value instanceof Map) { int size = 0; for (def entry : value.entrySet()) { size += valueLength(entry.getKey()); size += valueLength(entry.getValue()); } return size; } else { /* int, long, etc */ return value.toString().length(); }}return fieldLength(params._source, 'auxiliary_text') + fieldLength(params._source, 'category') + fieldLength(params._source, 'external_link') + fieldLength(params._source, 'heading') + fieldLength(params._source, 'language') + fieldLength(params._source, 'outgoing_link') + fieldLength(params._source, 'redirect') + fieldLength(params._source, 'template') + fieldLength(params._source, 'weighted_tags') + fieldLength(params._source, 'content_model') + fieldLength(params._source, 'create_timestamp') + fieldLength(params._source, 'file_bits') + fieldLength(params._source, 'file_height') + fieldLength(params._source, 'file_media_type') + fieldLength(params._source, 'file_mime') + fieldLength(params._source, 'file_resolution') + fieldLength(params._source, 'file_size') + fieldLength(params._source, 'file_text') + fieldLength(params._source, 'file_width') + fieldLength(params._source, 'local_sites_with_dupe') + fieldLength(params._source, 'namespace_text') + fieldLength(params._source, 'opening_text') + fieldLength(params._source, 'source_text') + fieldLength(params._source, 'text') + fieldLength(params._source, 'timestamp') + fieldLength(params._source, 'title') + fieldLength(params._source, 'wiki') + fieldLength(params._source, 'wikibase_item');"
}
}
}
}
}
}
}
},
"size": 0
}