@@ -1320,18 +1320,40 @@ def get_rank_of_doc_in_search_results(self, content, doc_id):
13201320 self .__log .info ("Doc ID %s not found in search results." % doc_id )
13211321 return - 1
13221322
1323+ def _build_full_index_name (self ):
1324+ """Construct the fully-prefixed index name (bucket.scope.name) for global endpoint."""
1325+ if self ._source_name and self .index_type != "fulltext-alias" :
1326+ scope = self .scope if self .scope else "_default"
1327+ return "{0}.{1}.{2}" .format (self ._source_name , scope , self .name )
1328+ return self .name
1329+
1330+ def _update_index_name (self , full_name ):
1331+ """Update index name to the server-assigned full name if it differs."""
1332+ if full_name and full_name != self .name and not self .is_elixir :
1333+ self .__log .info ("Index name updated from '{0}' to '{1}'" .format (
1334+ self .name , full_name ))
1335+ self .name = full_name
1336+ self .index_definition ['name' ] = full_name
1337+
13231338 def create (self , rest = None ):
13241339 self .__log .info ("Checking if index already exists ..." )
13251340 if not rest :
13261341 rest = RestConnection (self .__cluster .get_random_fts_node ())
13271342 status , _ = rest .get_fts_index_definition (self .name , self ._source_name , self .scope )
13281343 if status != 400 :
13291344 rest .delete_fts_index (self .name , self ._source_name , self .scope )
1345+ else :
1346+ full_name = self ._build_full_index_name ()
1347+ if full_name != self .name :
1348+ status , _ = rest .get_fts_index_definition (full_name , self ._source_name , self .scope )
1349+ if status != 400 :
1350+ rest .delete_fts_index (full_name , self ._source_name , self .scope )
13301351 self .__log .info ("Creating {0} {1} on {2}" .format (
13311352 self .index_type ,
13321353 self .name ,
13331354 rest .ip ))
1334- rest .create_fts_index (self .name , self .index_definition , self ._source_name , self .scope )
1355+ _ , full_name = rest .create_fts_index (self .name , self .index_definition , self ._source_name , self .scope )
1356+ self ._update_index_name (full_name )
13351357 self .__cluster .get_indexes ().append (self )
13361358 self .uuid = self .get_uuid ()
13371359 global_vars .system_event_logs .add_event (SearchServiceEvents .index_created (rest .ip , self .uuid ,
@@ -1344,7 +1366,8 @@ def create_no_check(self, rest=None):
13441366 self .index_type ,
13451367 self .name ,
13461368 rest .ip ))
1347- rest .create_fts_index (self .name , self .index_definition , self ._source_name , self .scope )
1369+ _ , full_name = rest .create_fts_index (self .name , self .index_definition , self ._source_name , self .scope )
1370+ self ._update_index_name (full_name )
13481371 self .__cluster .get_indexes ().append (self )
13491372
13501373 def update (self , rest = None ):
@@ -3238,15 +3261,15 @@ def create_fts_index_wait_for_completion(self, sample_index_name_1, sample_bucke
32383261 return fts_idx
32393262
32403263 def get_fts_index_by_name (self , name ):
3241- """ Returns an FTSIndex object with the given name """
3264+ """ Returns an FTSIndex object with the given name (supports both short and full prefixed names) """
32423265 for index in self .__indexes :
3243- if index .name == name :
3266+ if index .name == name or index . name . endswith ( '.' + name ) :
32443267 return index
32453268
32463269 def delete_fts_index (self , name ):
3247- """ Delete an FTSIndex object with the given name from a given node """
3270+ """ Delete an FTSIndex object with the given name from a given node (supports both short and full prefixed names) """
32483271 for index in self .__indexes .copy ():
3249- if index .name == name :
3272+ if index .name == name or index . name . endswith ( '.' + name ) :
32503273 index .delete ()
32513274
32523275 def delete_all_fts_indexes (self ):
0 commit comments