def test_create_or_update_indexer(self, api_key, endpoint, index_name, **kwargs): client = SearchIndexerClient(endpoint, AzureKeyCredential(api_key)) indexer = self._prepare_indexer(endpoint, api_key) created = client.create_indexer(indexer) assert len(client.get_indexers()) == 1 indexer.description = "updated" client.create_or_update_indexer(indexer) assert len(client.get_indexers()) == 1 result = client.get_indexer("sample-indexer") assert result.name == "sample-indexer" assert result.description == "updated"
def test_delete_indexer_if_unchanged(self, api_key, endpoint, index_name, **kwargs): client = SearchIndexerClient(endpoint, AzureKeyCredential(api_key)) indexer = self._prepare_indexer(endpoint, api_key) result = client.create_indexer(indexer) etag = result.e_tag indexer.description = "updated" client.create_or_update_indexer(indexer) indexer.e_tag = etag with pytest.raises(HttpResponseError): client.delete_indexer(indexer, match_condition=MatchConditions.IfNotModified)
def sample_indexer_workflow(): # Now that we have a datasource and an index, we can create an indexer. skillset_name = _create_skillset().name print("Skillset is created") ds_name = _create_datasource().name print("Data source is created") ind_name = _create_index().name print("Index is created") # we pass the data source, skillsets and targeted index to build an indexer parameters = IndexingParameters(configuration={"parsingMode": "jsonArray"}) indexer = SearchIndexer( name="hotel-data-indexer", data_source_name=ds_name, target_index_name=ind_name, skillset_name=skillset_name, parameters=parameters ) indexer_client = SearchIndexerClient(service_endpoint, AzureKeyCredential(key)) indexer_client.create_indexer(indexer) # create the indexer # to get an indexer result = indexer_client.get_indexer("hotel-data-indexer") print(result) # To run an indexer, we can use run_indexer() indexer_client.run_indexer(result.name) # Using create or update to schedule an indexer schedule = IndexingSchedule(interval=datetime.timedelta(hours=24)) result.schedule = schedule updated_indexer = indexer_client.create_or_update_indexer(result) print(updated_indexer) # get the status of an indexer indexer_client.get_indexer_status(updated_indexer.name)