How do i change the apachesolr index environment based on node values?
I do not know if it is possible to shard Drupal nodes into different Solr indexes based on arbitrary field values, I do however know it is possible at a node type level.

From the API documentation:

/**
 * This is invoked for each entity that is being inspected to be added to the
 * index. if any module returns TRUE, the entity is skipped for indexing.
 *
 * @param integer $entity_id
 * @param string $entity_type
 * @param integer $row
 *   A complete set of data from the indexing table.
 * @param string $env_id
 * @return boolean
 */
function hook_apachesolr_exclude($entity_id, $entity_type, $row, $env_id) {
  // Never index media entities to core_1.
  if ($entity_type == 'media' &amp;&amp; $env_id == 'core_1') {
    return TRUE;
  }
  // Never index news entities to core_2.
  if ($entity_type == 'news' &amp;&amp; $env_id == 'core_2') {
    return TRUE;
  }
  // Default to allow.
  return FALSE;
}


So all you would need to do is allow some node types to be indexed by one core, and allow some other node types to be indexed by another core.