@@ -755,6 +755,70 @@ public void testNegativeRemoteIndexNameThrows() {
755
755
assertNotNull (ee .getCause ());
756
756
}
757
757
758
+ public void testClusterDetailsWhenLocalClusterHasNoMatchingIndex () throws Exception {
759
+ Map <String , Object > testClusterInfo = setupTwoClusters ();
760
+ String remoteIndex = (String ) testClusterInfo .get ("remote.index" );
761
+ int remoteNumShards = (Integer ) testClusterInfo .get ("remote.num_shards" );
762
+
763
+ SearchRequest searchRequest = new SearchRequest ("nomatch*" , REMOTE_CLUSTER + ":" + remoteIndex );
764
+ if (randomBoolean ()) {
765
+ searchRequest = searchRequest .scroll (TimeValue .timeValueMinutes (1 ));
766
+ }
767
+
768
+ searchRequest .allowPartialSearchResults (false );
769
+ if (randomBoolean ()) {
770
+ searchRequest .setBatchedReduceSize (randomIntBetween (3 , 20 ));
771
+ }
772
+
773
+ boolean minimizeRoundtrips = false ;
774
+ searchRequest .setCcsMinimizeRoundtrips (minimizeRoundtrips );
775
+
776
+ boolean dfs = randomBoolean ();
777
+ if (dfs ) {
778
+ searchRequest .searchType (SearchType .DFS_QUERY_THEN_FETCH );
779
+ }
780
+
781
+ if (randomBoolean ()) {
782
+ searchRequest .setPreFilterShardSize (1 );
783
+ }
784
+
785
+ searchRequest .source (new SearchSourceBuilder ().query (new MatchAllQueryBuilder ()).size (10 ));
786
+ assertResponse (client (LOCAL_CLUSTER ).search (searchRequest ), response -> {
787
+ assertNotNull (response );
788
+
789
+ Clusters clusters = response .getClusters ();
790
+ assertFalse ("search cluster results should BE successful" , clusters .hasPartialResults ());
791
+ assertThat (clusters .getTotal (), equalTo (2 ));
792
+ assertThat (clusters .getClusterStateCount (Cluster .Status .SUCCESSFUL ), equalTo (2 ));
793
+ assertThat (clusters .getClusterStateCount (Cluster .Status .SKIPPED ), equalTo (0 ));
794
+ assertThat (clusters .getClusterStateCount (Cluster .Status .RUNNING ), equalTo (0 ));
795
+ assertThat (clusters .getClusterStateCount (Cluster .Status .PARTIAL ), equalTo (0 ));
796
+ assertThat (clusters .getClusterStateCount (Cluster .Status .FAILED ), equalTo (0 ));
797
+
798
+ Cluster localClusterSearchInfo = clusters .getCluster (RemoteClusterAware .LOCAL_CLUSTER_GROUP_KEY );
799
+ assertNotNull (localClusterSearchInfo );
800
+ assertThat (localClusterSearchInfo .getStatus (), equalTo (Cluster .Status .SUCCESSFUL ));
801
+ assertThat (localClusterSearchInfo .getIndexExpression (), equalTo ("nomatch*" ));
802
+ assertThat (localClusterSearchInfo .getTotalShards (), equalTo (0 ));
803
+ assertThat (localClusterSearchInfo .getSuccessfulShards (), equalTo (0 ));
804
+ assertThat (localClusterSearchInfo .getSkippedShards (), equalTo (0 ));
805
+ assertThat (localClusterSearchInfo .getFailedShards (), equalTo (0 ));
806
+ assertThat (localClusterSearchInfo .getFailures ().size (), equalTo (0 ));
807
+ assertThat (localClusterSearchInfo .getTook ().millis (), equalTo (0L ));
808
+
809
+ Cluster remoteClusterSearchInfo = clusters .getCluster (REMOTE_CLUSTER );
810
+ assertNotNull (remoteClusterSearchInfo );
811
+ assertThat (remoteClusterSearchInfo .getStatus (), equalTo (Cluster .Status .SUCCESSFUL ));
812
+ assertThat (remoteClusterSearchInfo .getIndexExpression (), equalTo (remoteIndex ));
813
+ assertThat (remoteClusterSearchInfo .getTotalShards (), equalTo (remoteNumShards ));
814
+ assertThat (remoteClusterSearchInfo .getSuccessfulShards (), equalTo (remoteNumShards ));
815
+ assertThat (remoteClusterSearchInfo .getSkippedShards (), equalTo (0 ));
816
+ assertThat (remoteClusterSearchInfo .getFailedShards (), equalTo (0 ));
817
+ assertThat (remoteClusterSearchInfo .getFailures ().size (), equalTo (0 ));
818
+ assertThat (remoteClusterSearchInfo .getTook ().millis (), greaterThan (0L ));
819
+ });
820
+ }
821
+
758
822
private static void assertOneFailedShard (Cluster cluster , int totalShards ) {
759
823
assertNotNull (cluster );
760
824
assertThat (cluster .getStatus (), equalTo (Cluster .Status .PARTIAL ));
0 commit comments