currently: • read-only, single mapping (multiple indices allowed if compatible) • mix of ANSI SQL (subset) and Elasticsearch (50%/50%) Adhere to ES experince • Lightweight and fast • Easy to pick-up • No external dependencies/moving parts • Elasticsearch underneath • Part of X-Pack
FROM emp SELECT last_name, first_name FROM emp ORDER BY emp_no SELECT … FROM emp WHERE emp_no < 100 AND salary > 50000 SELECT FLOOR(salary/12) s FROM emp WHERE tenure > 10 SELECT last_name l FROM emp WHERE YEAR(birth_date) > 1960 SELECT first_name f FROM emp WHERE QUERY(‘one neo`) SELECT last_name l FROM emp WHERE MATCH(first_name, ‘Thomas’) SELECT first_name FROM emp WHERE MATCH(‘first_name, last_name’, ‘Anderson’) ORDER BY SCORE()
BY g SELECT gender g, COUNT(*) c, AVG(salary) FROM emp GROUP BY g SELECT tenure t, MAX(salary) FROM emp GROUP BY t HAVING AVG(salary) BETWEEN 30000 AND 50000 SELECT MAX(salary), MIN(salary) FROM emp WHERE emp_no > 300 GROUP BY tenure HAVING MAX(salary) - MIN(salary) > 5000
8 Supports java.sql and javax.sql APIs Pays attention to details ‒ Timeouts (connect vs read vs network) ‒ Logging WIP- Light, without dependencies (safe for embedding)
Disjoint, Within, Contains, Envelope, Distance • asText, asBinary, dimensions – supported by ES internally • support reasonable set out of the 150 functions • Well-Known-Format – Well-Known-Text is possible, Well-Known-Binary wip SELECT Disjoint(centerlines, boundary) FROM divided_routes WHERE divided_routes.name = 'Route 75'
filtering and aggs SELECT GEO_BOUNDS(*) FROM … WHERE name=”musee” SELECT GEO_CENTROID() FROM … GROUP BY city SELECT * FROM … WHERE GEO_BOUNDS(top left, bottom_right) GROUP BY GEO_GRID(location)