Created
December 29, 2020 19:51
-
-
Save nik9000/3cc956d1bc420f3b7c5734ef99aeded0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/modules/parent-join/src/yamlRestTest/resources/rest-api-spec/test/50_order_by.yml b/modules/parent-join/src/yamlRestTest/resources/rest-api-spec/test/50_order_by.yml | |
new file mode 100644 | |
index 0000000000000..f730d3f9e1261 | |
--- /dev/null | |
+++ b/modules/parent-join/src/yamlRestTest/resources/rest-api-spec/test/50_order_by.yml | |
@@ -0,0 +1,229 @@ | |
+--- | |
+"order by sub agg containing join": | |
+ - do: | |
+ indices.create: | |
+ index: test_1 | |
+ body: | |
+ settings: | |
+ number_of_shards: 1 | |
+ number_of_replicas: 0 | |
+ mappings: | |
+ properties: | |
+ name: | |
+ type: keyword | |
+ join: | |
+ type: join | |
+ relations: | |
+ animal: feature | |
+ | |
+ - do: | |
+ bulk: | |
+ index: test_1 | |
+ refresh: true | |
+ body: | | |
+ { "index": {"_id": "sheep"} } | |
+ { "name": "sheep", "join": {"name": "animal"} } | |
+ { "index": {"_id": "cow"} } | |
+ { "name": "cow", "join": {"name": "animal"} } | |
+ { "index": {"_id": "pig"} } | |
+ { "name": "pig", "join": {"name": "animal"} } | |
+ { "index": {"routing": "sheep"} } | |
+ { "join": {"name": "feature", "parent": "sheep"}, "tag": "danger", "number": 1 } | |
+ { "index": {"routing": "sheep"} } | |
+ { "join": {"name": "feature", "parent": "sheep"}, "tag": "fluffiness", "number": 10 } | |
+ { "index": {"routing": "cow"} } | |
+ { "join": {"name": "feature", "parent": "cow"}, "tag": "danger", "number": 3 } | |
+ { "index": {"routing": "cow"} } | |
+ { "join": {"name": "feature", "parent": "cow"}, "tag": "fluffiness", "number": 1 } | |
+ { "index": {"routing": "pig"} } | |
+ { "join": {"name": "feature", "parent": "pig"}, "tag": "danger", "number": 100 } | |
+ { "index": {"routing": "pig"} } | |
+ { "join": {"name": "feature", "parent": "pig"}, "tag": "fluffiness", "number": 1 } | |
+ | |
+ - do: | |
+ search: | |
+ index: test_1 | |
+ body: | |
+ size: 0 | |
+ aggs: | |
+ name: | |
+ terms: | |
+ size: 1 | |
+ shard_size: 1 | |
+ field: name | |
+ order: | |
+ - "children>max_number": desc | |
+ aggs: | |
+ children: | |
+ children: | |
+ type: feature | |
+ aggs: | |
+ max_number: | |
+ max: | |
+ field: number | |
+ - length: { aggregations.name.buckets: 1 } | |
+ - match: { aggregations.name.buckets.0.key: pig } | |
+ - match: { aggregations.name.buckets.0.doc_count: 1 } | |
+ - match: { aggregations.name.buckets.0.children.max_number.value: 100.0 } | |
+ | |
+--- | |
+"order by sub agg containing join and nested": | |
+ - do: | |
+ indices.create: | |
+ index: test_1 | |
+ body: | |
+ settings: | |
+ number_of_shards: 1 | |
+ number_of_replicas: 0 | |
+ mappings: | |
+ properties: | |
+ name: | |
+ type: keyword | |
+ join: | |
+ type: join | |
+ relations: | |
+ animal: feature | |
+ nested: | |
+ type: nested | |
+ properties: | |
+ number: | |
+ type: long | |
+ | |
+ - do: | |
+ bulk: | |
+ index: test_1 | |
+ refresh: true | |
+ body: | | |
+ { "index": {"_id": "sheep"} } | |
+ { "name": "sheep", "join": {"name": "animal"} } | |
+ { "index": {"_id": "cow"} } | |
+ { "name": "cow", "join": {"name": "animal"} } | |
+ { "index": {"_id": "pig"} } | |
+ { "name": "pig", "join": {"name": "animal"} } | |
+ { "index": {"routing": "sheep"} } | |
+ { "join": {"name": "feature", "parent": "sheep"}, "tag": "danger", "nested": [{"number": 1}] } | |
+ { "index": {"routing": "sheep"} } | |
+ { "join": {"name": "feature", "parent": "sheep"}, "tag": "fluffiness", "nested": [{"number": 10}] } | |
+ { "index": {"routing": "cow"} } | |
+ { "join": {"name": "feature", "parent": "cow"}, "tag": "danger", "nested": [{"number": 3}] } | |
+ { "index": {"routing": "cow"} } | |
+ { "join": {"name": "feature", "parent": "cow"}, "tag": "fluffiness", "nested": [{"number": 1}] } | |
+ { "index": {"routing": "pig"} } | |
+ { "join": {"name": "feature", "parent": "pig"}, "tag": "danger", "nested": [{"number": 100}, {"number": 1}] } | |
+ { "index": {"routing": "pig"} } | |
+ { "join": {"name": "feature", "parent": "pig"}, "tag": "fluffiness", "nested": [{"number": 1}] } | |
+ | |
+ - do: | |
+ search: | |
+ index: test_1 | |
+ body: | |
+ size: 0 | |
+ aggs: | |
+ name: | |
+ terms: | |
+ size: 1 | |
+ shard_size: 1 | |
+ field: name | |
+ order: | |
+ - "children>nested>max_number": desc | |
+ aggs: | |
+ children: | |
+ children: | |
+ type: feature | |
+ aggs: | |
+ nested: | |
+ nested: | |
+ path: nested | |
+ aggs: | |
+ max_number: | |
+ max: | |
+ field: nested.number | |
+ - length: { aggregations.name.buckets: 1 } | |
+ - match: { aggregations.name.buckets.0.key: pig } | |
+ - match: { aggregations.name.buckets.0.doc_count: 1 } | |
+ - match: { aggregations.name.buckets.0.children.nested.max_number.value: 100.0 } | |
+ | |
+--- | |
+"order by sub agg containing join and nested and filter": | |
+ - do: | |
+ indices.create: | |
+ index: test_1 | |
+ body: | |
+ settings: | |
+ number_of_shards: 1 | |
+ number_of_replicas: 0 | |
+ mappings: | |
+ properties: | |
+ name: | |
+ type: keyword | |
+ join: | |
+ type: join | |
+ relations: | |
+ animal: feature | |
+ nested: | |
+ type: nested | |
+ properties: | |
+ code: | |
+ type: | |
+ keyword | |
+ number: | |
+ type: long | |
+ | |
+ - do: | |
+ bulk: | |
+ index: test_1 | |
+ refresh: true | |
+ body: | | |
+ { "index": {"_id": "sheep"} } | |
+ { "name": "sheep", "join": {"name": "animal"} } | |
+ { "index": {"_id": "cow"} } | |
+ { "name": "cow", "join": {"name": "animal"} } | |
+ { "index": {"_id": "pig"} } | |
+ { "name": "pig", "join": {"name": "animal"} } | |
+ { "index": {"routing": "sheep"} } | |
+ { "join": {"name": "feature", "parent": "sheep"}, "tag": "danger", "nested": [{"code": "mighty", "number": 1}, {"code": "meek", "number": 100}] } | |
+ { "index": {"routing": "sheep"} } | |
+ { "join": {"name": "feature", "parent": "sheep"}, "tag": "fluffiness", "nested": [{"code": "mighty", "number": 10}, {"code": "meek", "number": 10}] } | |
+ { "index": {"routing": "cow"} } | |
+ { "join": {"name": "feature", "parent": "cow"}, "tag": "danger", "nested": [{"code": "mighty", "number": 3}, {"code": "meek", "number": 3}] } | |
+ { "index": {"routing": "cow"} } | |
+ { "join": {"name": "feature", "parent": "cow"}, "tag": "fluffiness", "nested": [{"code": "mighty", "number": 1}, {"code": "meek", "number": 1}] } | |
+ { "index": {"routing": "pig"} } | |
+ { "join": {"name": "feature", "parent": "pig"}, "tag": "danger", "nested": [{"code": "mighty", "number": 100}, {"code": "meek", "number": 1}] } | |
+ { "index": {"routing": "pig"} } | |
+ { "join": {"name": "feature", "parent": "pig"}, "tag": "fluffiness", "nested": [{"code": "mighty", "number": 1}, {"code": "meek", "number": 1}] } | |
+ | |
+ - do: | |
+ search: | |
+ index: test_1 | |
+ body: | |
+ size: 0 | |
+ aggs: | |
+ name: | |
+ terms: | |
+ size: 1 | |
+ shard_size: 1 | |
+ field: name | |
+ order: | |
+ - "children>nested>filter>max_number": desc | |
+ aggs: | |
+ children: | |
+ children: | |
+ type: feature | |
+ aggs: | |
+ nested: | |
+ nested: | |
+ path: nested | |
+ aggs: | |
+ filter: | |
+ filter: | |
+ match: | |
+ nested.code: mighty | |
+ aggs: | |
+ max_number: | |
+ max: | |
+ field: nested.number | |
+ - length: { aggregations.name.buckets: 1 } | |
+ - match: { aggregations.name.buckets.0.key: pig } | |
+ - match: { aggregations.name.buckets.0.doc_count: 1 } | |
+ - match: { aggregations.name.buckets.0.children.nested.filter.max_number.value: 100.0 } | |
diff --git a/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/20_terms.yml b/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/20_terms.yml | |
index adf812537e43f..13c047a3b818e 100644 | |
--- a/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/20_terms.yml | |
+++ b/rest-api-spec/src/main/resources/rest-api-spec/test/search.aggregation/20_terms.yml | |
@@ -1069,3 +1069,151 @@ setup: | |
- match: { aggregations.str_terms.buckets.2.key: pig } | |
- match: { aggregations.str_terms.buckets.2.doc_count: 0 } | |
- match: { aggregations.str_terms.buckets.2.max_number.value: null } | |
+ | |
+--- | |
+"order by sub agg": | |
+ - do: | |
+ bulk: | |
+ index: test_1 | |
+ refresh: true | |
+ body: | | |
+ { "index": {} } | |
+ { "str": "sheep", "number": 1 } | |
+ { "index": {} } | |
+ { "str": "sheep", "number": 3 } | |
+ { "index": {} } | |
+ { "str": "cow", "number": 7 } | |
+ { "index": {} } | |
+ { "str": "pig", "number": 1 } | |
+ | |
+ - do: | |
+ search: | |
+ index: test_1 | |
+ body: | |
+ size: 0 | |
+ aggs: | |
+ str_terms: | |
+ terms: | |
+ size: 1 | |
+ shard_size: 1 | |
+ field: str | |
+ order: | |
+ - max_number: desc | |
+ aggs: | |
+ max_number: | |
+ max: | |
+ field: number | |
+ - length: { aggregations.str_terms.buckets: 1 } | |
+ - match: { aggregations.str_terms.buckets.0.key: cow } | |
+ - match: { aggregations.str_terms.buckets.0.doc_count: 1 } | |
+ - match: { aggregations.str_terms.buckets.0.max_number.value: 7.0 } | |
+ | |
+--- | |
+"order by sub agg containing nested": | |
+ - do: | |
+ indices.put_mapping: | |
+ index: test_1 | |
+ body: | |
+ properties: | |
+ nested: | |
+ type: nested | |
+ properties: | |
+ tag: | |
+ type: keyword | |
+ number: | |
+ type: long | |
+ | |
+ - do: | |
+ bulk: | |
+ index: test_1 | |
+ refresh: true | |
+ body: | | |
+ { "index": {} } | |
+ { "str": "sheep", "nested": [{"tag": "danger", "number": 1}, {"tag": "fluffiness", "number": 10}] } | |
+ { "index": {} } | |
+ { "str": "cow", "nested": [{"tag": "danger", "number": 3}, {"tag": "fluffiness", "number": 1}] } | |
+ { "index": {} } | |
+ { "str": "pig", "nested": [{"tag": "danger", "number": 100}, {"tag": "fluffiness", "number": 1}] } | |
+ | |
+ - do: | |
+ search: | |
+ index: test_1 | |
+ body: | |
+ size: 0 | |
+ aggs: | |
+ str_terms: | |
+ terms: | |
+ size: 1 | |
+ shard_size: 1 | |
+ field: str | |
+ order: | |
+ - "nested>max_number": desc | |
+ aggs: | |
+ nested: | |
+ nested: | |
+ path: nested | |
+ aggs: | |
+ max_number: | |
+ max: | |
+ field: nested.number | |
+ - length: { aggregations.str_terms.buckets: 1 } | |
+ - match: { aggregations.str_terms.buckets.0.key: pig } | |
+ - match: { aggregations.str_terms.buckets.0.doc_count: 1 } | |
+ - match: { aggregations.str_terms.buckets.0.nested.max_number.value: 100.0 } | |
+ | |
+--- | |
+"order by sub agg containing filter": | |
+ - do: | |
+ indices.put_mapping: | |
+ index: test_1 | |
+ body: | |
+ properties: | |
+ nested: | |
+ type: nested | |
+ properties: | |
+ tag: | |
+ type: keyword | |
+ number: | |
+ type: long | |
+ | |
+ - do: | |
+ bulk: | |
+ index: test_1 | |
+ refresh: true | |
+ body: | | |
+ { "index": {} } | |
+ { "str": "sheep", "number": 1 } | |
+ { "index": {} } | |
+ { "str": "sheep", "number": 3 } | |
+ { "index": {} } | |
+ { "str": "cow", "number": 7 } | |
+ { "index": {} } | |
+ { "str": "pig", "number": 100 } | |
+ | |
+ - do: | |
+ search: | |
+ index: test_1 | |
+ body: | |
+ size: 0 | |
+ aggs: | |
+ str_terms: | |
+ terms: | |
+ size: 1 | |
+ shard_size: 1 | |
+ field: str | |
+ order: | |
+ - "filter>max_number": desc | |
+ aggs: | |
+ filter: | |
+ filter: | |
+ range: | |
+ number: | |
+ lt: 10 | |
+ aggs: | |
+ max_number: | |
+ max: | |
+ field: number | |
+ - length: { aggregations.str_terms.buckets: 1 } | |
+ - match: { aggregations.str_terms.buckets.0.key: cow } | |
+ - match: { aggregations.str_terms.buckets.0.doc_count: 1 } | |
+ - match: { aggregations.str_terms.buckets.0.filter.max_number.value: 7.0 } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment