For updating the index for a specific item, you can use the IndexCustodian
var toIndex = ContentSearchManager.GetIndex("sitecore_products_index");
if(toIndex !=null= null)
{
var tempItem = (SitecoreIndexableItem)item;
IndexCustodian.Refresh(toIndex,tempItem);
}
The index custodian will start a job for updating your index.