class_docstr: Encapsulates logic about the communication, queries and index mapping
  transformations between DAOs layer and the elasticsearch backend.
code: def create_dataset(
      self,
      id: str,
      task: TaskType,
      metadata_values: Optional[Dict[str, Any]] = None,
      vectors_cfg: Optional[Dict[str, Any]] = None,
      force_recreate: bool = False,
  ) -> None:
      _mappings = self._common_records_mappings
      task_mappings = self.get_task_mapping(task).copy()
      for k in task_mappings:
          if isinstance(task_mappings[k], list):
              _mappings[k] = [*_mappings.get(k, []), *task_mappings[k]]
          else:
              _mappings[k] = {
                  **_mappings.get(k, {}),
                  **task_mappings[k],
              }
  
      index = dataset_records_index(id)
      self.client.create_index(
          index=index,
          settings=self._common_records_settings,
          mappings={**self._common_records_mappings, **_mappings},
          force_recreate=force_recreate,
      )
      if metadata_values:
          self._configure_metadata_fields(
              index=index,
              metadata_values=metadata_values,
          )
  
      if vectors_cfg:
          self._configure_vectors_fields(
              index=index,
              vectors_cfg=vectors_cfg,
          )
  
imports: from typing import Any, Dict, Iterable, List, Optional, Tuple
  from argilla.logging import LoggingMixin
  from argilla.server.commons.models import TaskType
  from argilla.server.constants import PROTECTED_METADATA_FIELD_PREFIX
  from argilla.server.daos.backend.base import IndexNotFoundError, InvalidSearchError
  from argilla.server.daos.backend.client_adapters.base import IClientAdapter
  from argilla.server.daos.backend.client_adapters.factory import ClientAdapterFactory
  from argilla.server.daos.backend.mappings.datasets import DATASETS_INDEX_NAME, datasets_index_mappings
  from argilla.server.daos.backend.mappings.helpers import mappings, tasks_common_mappings, tasks_common_settings
  from argilla.server.daos.backend.mappings.text2text import text2text_mappings
  from argilla.server.daos.backend.mappings.text_classification import text_classification_mappings
  from argilla.server.daos.backend.mappings.token_classification import token_classification_mappings
  from argilla.server.daos.backend.metrics import ALL_METRICS
  from argilla.server.daos.backend.metrics.base import ElasticsearchMetric
  from argilla.server.daos.backend.search.model import BackendRecordsQuery, BaseDatasetsQuery, BaseQuery, BaseRecordsQuery, SortableField, SortConfig
  from argilla.server.errors import BadRequestError, EntityNotFoundError
  from argilla.server.errors.task_errors import MetadataLimitExceededError
  from argilla.server.pydantic_v1 import BaseModel, Field
  from argilla.server.settings import settings
label_desc: Use image node_id 11 for calling the GenericElasticEngineBackend obj's underlying member method code with example usage: obj.create_dataset(id, task, metadata_values, vectors_cfg, force_recreate) without return types