44<titleabbrev>Correlate data with LOOKUP JOIN</titleabbrev>
55++++
66
7- The {esql} <<esql-lookup-join,LOOKUP join>>
7+ The {esql} <<esql-lookup-join,LOOKUP join>>
88processing command combines data from your {esql} query results
99table with matching records from a specified lookup index. It adds
1010fields from the lookup index as new columns to your results table based
@@ -29,12 +29,11 @@ in the fact that they both help you join data together. You should use
2929
3030* Your enrichment data changes frequently
3131* You want to avoid index-time processing
32- * You're working with regular indices
33- * You need to preserve distinct matches
32+ * You want SQL-like behavior, so that multiple matches result in multiple rows
3433* You need to match on any field in a lookup index
3534* You use document or field level security
36- * You want to restrict users to a specific lookup indices that they can
37- you
35+ * You want to restrict users to use only specific lookup indices
36+ * You do not need to match using ranges or spatial relations
3837
3938[discrete]
4039[[esql-how-lookup-join-works]]
@@ -146,7 +145,7 @@ To use `LOOKUP JOIN`, the following requirements must be met:
146145* *Compatible data types*: The join key and join field in the lookup
147146index must have compatible data types. This means:
148147** The data types must either be identical or be internally represented
149- as the same type in Elasticsearch's type system
148+ as the same type in {esql}
150149** Numeric types follow these compatibility rules:
151150*** `short` and `byte` are compatible with `integer` (all represented as
152151`int`)
@@ -164,18 +163,15 @@ representations, see the <<esql-supported-types,Supported Field Types documentat
164163
165164The following are the current limitations with `LOOKUP JOIN`
166165
167- * `LOOKUP JOIN` will be successful if the join field in the lookup index
168- is a `KEYWORD` type. If the main index's join field is `TEXT` type, it
169- must have an exact `.keyword` subfield that can be matched with the
170- lookup index's `KEYWORD` field.
171166* Indices in <<index-mode-setting,lookup>> mode are always single-sharded.
172167* Cross cluster search is unsupported. Both source and lookup indices
173168must be local.
169+ * Currently, only matching on equality is supported.
174170* `LOOKUP JOIN` can only use a single match field and a single index.
175171Wildcards, aliases, datemath, and datastreams are not supported.
176- * The name of the match field in
177- `LOOKUP JOIN lu++_++idx ON match++_++field` must match an existing field
178- in the query. This may require renames or evals to achieve.
172+ * The name of the match field in `LOOKUP JOIN lu_idx ON match_field` must match
173+ an existing field in the query. This may require `RENAME`s or `EVAL`s to
174+ achieve.
179175* The query will circuit break if there are too many matching documents
180176in the lookup index, or if the documents are too large. More precisely,
181177`LOOKUP JOIN` works in batches of, normally, about 10,000 rows; a large
0 commit comments