|
78 | 78 | import org.opensearch.script.mustache.MultiSearchTemplateResponse.Item; |
79 | 79 | import org.opensearch.script.mustache.SearchTemplateRequest; |
80 | 80 | import org.opensearch.script.mustache.SearchTemplateResponse; |
| 81 | +import org.opensearch.search.MultiValueMode; |
81 | 82 | import org.opensearch.search.SearchHit; |
82 | 83 | import org.opensearch.search.aggregations.AggregationBuilders; |
83 | 84 | import org.opensearch.search.aggregations.BucketOrder; |
@@ -1827,6 +1828,40 @@ public void testCountAllIndicesMatchQuery() throws IOException { |
1827 | 1828 | assertEquals(3, countResponse.getCount()); |
1828 | 1829 | } |
1829 | 1830 |
|
| 1831 | + public void testMatrixStatsMultiValueModeEffect() throws IOException { |
| 1832 | + Request createIndex = new Request(HttpPut.METHOD_NAME, "/test_multi"); |
| 1833 | + client().performRequest(createIndex); |
| 1834 | + |
| 1835 | + Request doc = new Request(HttpPut.METHOD_NAME, "/test_multi/_doc/1"); |
| 1836 | + doc.setJsonEntity("{ \"num\": [10, 30], \"num2\": [40, 60] }"); |
| 1837 | + client().performRequest(doc); |
| 1838 | + |
| 1839 | + client().performRequest(new Request(HttpPost.METHOD_NAME, "/test_multi/_refresh")); |
| 1840 | + |
| 1841 | + SearchRequest avgRequest = new SearchRequest("test_multi"); |
| 1842 | + avgRequest.source( |
| 1843 | + new SearchSourceBuilder().aggregation( |
| 1844 | + new MatrixStatsAggregationBuilder("agg").fields(Arrays.asList("num", "num2")).multiValueMode(MultiValueMode.AVG) |
| 1845 | + ).size(0) |
| 1846 | + ); |
| 1847 | + |
| 1848 | + SearchRequest minRequest = new SearchRequest("test_multi"); |
| 1849 | + minRequest.source( |
| 1850 | + new SearchSourceBuilder().aggregation( |
| 1851 | + new MatrixStatsAggregationBuilder("agg").fields(Arrays.asList("num", "num2")).multiValueMode(MultiValueMode.MIN) |
| 1852 | + ).size(0) |
| 1853 | + ); |
| 1854 | + |
| 1855 | + SearchResponse avgResponse = execute(avgRequest, highLevelClient()::search, highLevelClient()::searchAsync); |
| 1856 | + SearchResponse minResponse = execute(minRequest, highLevelClient()::search, highLevelClient()::searchAsync); |
| 1857 | + |
| 1858 | + MatrixStats avgStats = avgResponse.getAggregations().get("agg"); |
| 1859 | + MatrixStats minStats = minResponse.getAggregations().get("agg"); |
| 1860 | + |
| 1861 | + assertNotEquals(avgStats.getMean("num"), minStats.getMean("num")); |
| 1862 | + assertNotEquals(avgStats.getMean("num2"), minStats.getMean("num2")); |
| 1863 | + } |
| 1864 | + |
1830 | 1865 | private static void assertCountHeader(CountResponse countResponse) { |
1831 | 1866 | assertEquals(0, countResponse.getSkippedShards()); |
1832 | 1867 | assertEquals(0, countResponse.getFailedShards()); |
|
0 commit comments