Dominik Schmidt fef1116ec8 feat(search): fold bleve metrics and nested aggregations from doc values
Bleve has count facets only: no metric and no nested facet. So far a
metric or a sub-aggregation widened the page to every match and loaded
all stored fields of each, then folded the hits in Go. The stored
document, extracted text included, was decoded for every match: about
1s and 780MB per 100k matches, independent of the nesting depth.

Metrics and nested aggregations now go through an aggCollector hooked
into bleve's collector walk via the document-match-handler context key.
For every match it visits the doc values of the aggregated fields, the
columnar storage bleve's own facets read, and folds them into an
accumulator tree. The page stays the size the caller asked for and no
stored field is loaded for an aggregation: 7x faster and 80x less memory
at 100k matches, within 1.4x of a native bleve facet.

Flat terms and range aggregations stay bleve facets. A range parent now
carries its sub-aggregations too (the hit fold matched range bucket
names against raw values and never attached them), and multi-valued
fields count each value like a bleve facet does.

The parity suite renders nested results and pins them on both engines:
terms in terms, metrics per bucket, terms in numeric and date ranges,
three levels, a page of one still aggregating every match, and a
malformed bound in a nested range.
2026-09-09 03:05:07 +00:00
2025-01-28 18:03:12 +01:00
2025-12-06 17:13:07 +01:00
2025-08-15 12:41:36 +02:00
2025-03-13 14:04:14 +01:00
2026-08-25 09:55:39 +02:00
2026-08-25 15:53:40 +02:00
2026-06-17 15:42:47 +02:00
2026-09-07 09:33:59 +02:00
2026-09-07 09:33:59 +02:00
2025-02-04 11:29:46 +01:00
2025-01-17 17:21:23 +01:00
2026-07-14 09:32:35 +02:00

OpenCloud logo

status-badge Matrix License

Server Backend

Tip

For general information about OpenCloud and how to install please visit OpenCloud on Github and OpenCloud GmbH.

This is the main repository of the OpenCloud server. It contains the golang codebase for the backend services.

Getting Involved

The OpenCloud server is released under Apache 2.0. The project is thrilled to receive contributions in all forms. Start hacking now, there are many ways to get involved such as:

Every contribution is meaningful and appreciated! Please refer to our Contribution Guidelines if you want to get started.

Build OpenCloud

To build the backend, follow these instructions:

Generate the assets needed by e.g., the web UI and the builtin IDP

make generate

Then compile the opencloud binary

make -C opencloud build

That will produce the binary opencloud/bin/opencloud. It can be started as a local test instance right away with a two step command:

opencloud/bin/opencloud init && opencloud/bin/opencloud server

This creates a server configuration (by default in $HOME/.opencloud) and starts the server.

For more setup- and installation options consult the Development Documentation.

Technology

Important information for contributors about the technology in use.

Authentication

The OpenCloud backend authenticates users via OpenID Connect using either an external IdP like Keycloak or the embedded LibreGraph Connect identity provider.

Database

The OpenCloud backend does not use a database. It stores all data in the filesystem. By default, the root directory of the backend is $HOME/.opencloud/.

Security

If you find a security-related issue, please contact security@opencloud.eu immediately.

S
Description
No description provided
Readme Apache-2.0
388 MiB
0 Stars 1 Watchers 0 Forks
Languages
Go 50.5%
Gherkin 34.9%
PHP 11.8%
JavaScript 1.2%
Shell 0.6%
Other 0.8%