Crate Facetten oder Elasticsearch Aggregationen unterstützt nicht direkt nutzen können. Wie Sie vorgeschlagen haben, können Sie die Elasticsearch API immer aktivieren. Es gibt jedoch andere Möglichkeiten, diese Aggregationen zu erhalten.
1) Haben Sie in Erwägung gezogen, mehrere Abfragen an den Cluster zu senden? Wenn Sie beispielsweise Ihre Seite dynamisch mit Javascript laden, können Sie die Suchergebnisse zuerst zurückgeben und die Facetten später laden. Dies sollte auch die Gesamtreaktionszeit der Anwendung verringern.
2) In CrateDB 2.1.x wird es Unterstützung für Unterabfragen sein, die es Ihnen ermöglichen, die Facetten in Ihrer Abfrage enthalten:
select q1.id, q1.domain, q1.tag, q2.d_count, q3.t_count from websites q1,
(select domain, count(*) as d_count from websites where text like '%query%' group by domain) q2,
(select tag, count(*) as t_count from websites where text like '%query%' group by tag) q3
where q1.domain = q2.domain and q1.tag = q3.tag and q1.text like '%query%'
order by q1.id
limit 5;
Dies gibt Ihnen eine Ergebnistabelle wie dieser, wo Sie die Suche haben Ergebnisse zusammen mit der Domain und Tag-Zählung für die Abfrage:
+----+--------------+-----------+---------+-----------+
| id | domain | tag | d_count | t_count |
+----+--------------+-------------+---------+---------+
| 1 | example.com | example | 2 | 3 |
| 14 | crate.io | software | 1 | 4 |
| 17 | google.com | search | 5 | 2 |
| 29 | github.com | open-source | 3 | 3 |
| 47 | linux.org | software | 2 | 4 |
+----+--------------+-------------+---------+---------+
Disclaimer: ich bin neu in Crate :)