Commit 35fbefa
Fix: Resolve text fields to .keyword for ES/OS sorting and aggregation (#27103)
* Fix: Resolve text fields to .keyword for ES/OS sorting and aggregation
Text fields like `name` and `displayName` are mapped as `text` type in
ES/OS indexes (for full-text search) with `.keyword` sub-fields for
sorting and aggregation. When these bare field names were passed to sort
or terms aggregation builders, ES/OS rejected them with
`illegal_argument_exception` because text fields cannot be used for
per-document field data operations.
Add centralized `resolveFieldForSortOrAggregation()` in
SearchSourceBuilderFactory that converts known text fields to their
`.keyword` sub-fields, and apply it across both search managers and
aggregation builders (terms, top_hits) for both ES and OpenSearch.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix: Address code review comments on resolveFieldForSortOrAggregation
- Support nested text fields (e.g. columns.name → columns.name.keyword)
by extracting the leaf segment for whitelist lookup instead of skipping
all dotted paths
- Fix unmappedType="integer" for remapped owner fields (ownerDisplayName,
ownerName) by introducing KEYWORD_SORT_FIELDS set used alongside the
.keyword suffix check in both search managers
- Remove dead remapAggregationField() method (no callers remained)
- Add 2 new test cases: nested text field resolution and flat keyword
sort field passthrough
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix: Address round 2 review comments on resolveFieldForSortOrAggregation
- Expand AGGREGATION_FIELD_REMAPS to cover bare owner paths (owners.name,
owners.displayName) so they remap to ownerName/ownerDisplayName instead
of incorrectly gaining a .keyword suffix
- Replace leaf-based extraction with exact-path matching so only root-level
name/displayName fields get .keyword appended; dotted paths like
service.name or columns.name now pass through unchanged
- Remove convertsNestedTextFieldsToKeyword test (no longer valid behavior)
- Add bare owner remap tests and doesNotAppendKeywordToNestedTextPaths test
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>1 parent 967e5cd commit 35fbefa
12 files changed
Lines changed: 191 additions & 20 deletions
File tree
- openmetadata-service/src
- main/java/org/openmetadata/service/search
- elasticsearch
- aggregations
- opensearch
- aggregations
- test/java/org/openmetadata/service/search
openmetadata-service/src/main/java/org/openmetadata/service/search/SearchSourceBuilderFactory.java
Lines changed: 50 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
225 | 225 | | |
226 | 226 | | |
227 | 227 | | |
228 | | - | |
229 | | - | |
230 | | - | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
231 | 231 | | |
232 | 232 | | |
233 | 233 | | |
234 | 234 | | |
235 | | - | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
236 | 238 | | |
237 | | - | |
238 | | - | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
239 | 283 | | |
240 | 284 | | |
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
143 | 143 | | |
144 | 144 | | |
145 | 145 | | |
146 | | - | |
| 146 | + | |
147 | 147 | | |
148 | 148 | | |
149 | 149 | | |
| |||
Lines changed: 7 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
74 | 74 | | |
75 | 75 | | |
76 | 76 | | |
| 77 | + | |
77 | 78 | | |
78 | 79 | | |
79 | 80 | | |
| |||
1183 | 1184 | | |
1184 | 1185 | | |
1185 | 1186 | | |
1186 | | - | |
| 1187 | + | |
| 1188 | + | |
1187 | 1189 | | |
1188 | 1190 | | |
1189 | 1191 | | |
1190 | 1192 | | |
1191 | 1193 | | |
1192 | 1194 | | |
1193 | | - | |
| 1195 | + | |
| 1196 | + | |
| 1197 | + | |
| 1198 | + | |
1194 | 1199 | | |
1195 | 1200 | | |
1196 | 1201 | | |
| |||
Lines changed: 3 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
275 | 275 | | |
276 | 276 | | |
277 | 277 | | |
278 | | - | |
| 278 | + | |
| 279 | + | |
279 | 280 | | |
280 | 281 | | |
281 | 282 | | |
| |||
932 | 933 | | |
933 | 934 | | |
934 | 935 | | |
935 | | - | |
| 936 | + | |
936 | 937 | | |
937 | 938 | | |
938 | 939 | | |
| |||
Lines changed: 2 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
12 | 13 | | |
13 | 14 | | |
14 | 15 | | |
| |||
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
29 | | - | |
| 30 | + | |
30 | 31 | | |
31 | 32 | | |
32 | 33 | | |
| |||
Lines changed: 3 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
23 | 24 | | |
24 | 25 | | |
25 | 26 | | |
26 | | - | |
| 27 | + | |
| 28 | + | |
27 | 29 | | |
28 | 30 | | |
29 | 31 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
143 | 143 | | |
144 | 144 | | |
145 | 145 | | |
146 | | - | |
| 146 | + | |
147 | 147 | | |
148 | 148 | | |
149 | 149 | | |
| |||
Lines changed: 7 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
| 62 | + | |
62 | 63 | | |
63 | 64 | | |
64 | 65 | | |
| |||
1222 | 1223 | | |
1223 | 1224 | | |
1224 | 1225 | | |
1225 | | - | |
| 1226 | + | |
| 1227 | + | |
1226 | 1228 | | |
1227 | 1229 | | |
1228 | 1230 | | |
1229 | 1231 | | |
1230 | 1232 | | |
1231 | 1233 | | |
1232 | | - | |
| 1234 | + | |
| 1235 | + | |
| 1236 | + | |
| 1237 | + | |
1233 | 1238 | | |
1234 | 1239 | | |
1235 | 1240 | | |
| |||
Lines changed: 3 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
722 | 722 | | |
723 | 723 | | |
724 | 724 | | |
725 | | - | |
| 725 | + | |
726 | 726 | | |
727 | 727 | | |
728 | 728 | | |
| |||
743 | 743 | | |
744 | 744 | | |
745 | 745 | | |
746 | | - | |
| 746 | + | |
| 747 | + | |
747 | 748 | | |
748 | 749 | | |
749 | 750 | | |
| |||
Lines changed: 2 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
29 | | - | |
| 30 | + | |
30 | 31 | | |
31 | 32 | | |
32 | 33 | | |
| |||
0 commit comments