

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Búsqueda entre clústeres en Amazon Service OpenSearch
<a name="cross-cluster-search"></a>

La búsqueda entre clústeres en Amazon OpenSearch Service te permite realizar consultas y agregaciones en varios dominios conectados. A menudo tiene más sentido usar varios dominios más pequeños en lugar de un solo dominio grande, especialmente cuando se ejecutan distintos tipos de cargas de trabajo.

Los dominios específicos de la carga de trabajo permiten realizar las siguientes tareas:
+ Optimice cada dominio mediante la elección de tipos de instancia para cargas de trabajo específicas.
+ Establezca límites de aislamiento de errores entre cargas de trabajo. Esto significa que si una de las cargas de trabajo devuelve un error, el error queda contenido dentro de ese dominio específico y no afecta a las demás cargas de trabajo. 
+ Escale más fácilmente entre dominios.

La búsqueda entre clústeres es compatible con OpenSearch los paneles, por lo que puede crear visualizaciones y paneles en todos sus dominios. Pagas las [tarifas estándar de transferencia AWS de datos](https://aws.amazon.com/opensearch-service/pricing/) por los resultados de búsqueda transferidos entre dominios.

**nota**  
El código abierto OpenSearch también tiene [documentación para la](https://opensearch.org/docs/latest/search-plugins/cross-cluster-search/) búsqueda entre clústeres. La configuración difiere considerablemente entre los clústeres de código abierto y los dominios gestionados OpenSearch de Amazon Service. En particular, en OpenSearch Service, las conexiones entre clústeres se configuran mediante la cURL, Consola de administración de AWS en lugar de a través de ella. Además, el servicio gestionado utiliza AWS Identity and Access Management (IAM) para la autenticación entre clústeres, además de un control de acceso detallado. Por lo tanto, le recomendamos que utilice esta documentación, en lugar de la documentación de código abierto, para configurar la OpenSearch búsqueda entre clústeres para sus dominios.

**Topics**
+ [Limitaciones](#cross-cluster-search-limitations)
+ [Requisitos previos de búsqueda entre clústeres](#cross-cluster-search-pp)
+ [Precio de búsqueda entre clústeres](#cross-cluster-search-pricing)
+ [Configuración de una conexión](#cross-cluster-search-set-up-connection)
+ [Eliminación de una conexión](#cross-cluster-search-remove-connection)
+ [Configuración de seguridad y explicación de ejemplo](#cross-cluster-search-walkthrough)
+ [OpenSearch Cuadros de mando](#cross-cluster-search-dashboards)

## Limitaciones
<a name="cross-cluster-search-limitations"></a>

La búsqueda en clústeres tiene varias limitaciones importantes:
+ No puedes conectar un dominio de Elasticsearch a otro dominio. OpenSearch 
+ No puedes conectarte a clústeres OpenSearch/Elasticsearch autogestionados.
+ Para conectar dominios entre regiones, ambos dominios deben estar en Elasticsearch 7.10 o una versión posterior o. OpenSearch
+ Un dominio puede tener un máximo de 20 conexiones salientes. Del mismo modo, un dominio puede tener un máximo de 20 conexiones entrantes. En otras palabras, un dominio puede conectarse a un máximo de 20 dominios.
+ El dominio de origen debe estar en la misma versión o superior a la del dominio de destino. Si configura una conexión bidireccional entre dos dominios y desea actualizar uno o ambos, antes debe eliminar una de las conexiones.
+ No puede usar diccionarios personalizados o SQL con la búsqueda en clústeres.
+ No se puede usar CloudFormation para conectar dominios.
+ No se puede utilizar la búsqueda entre clústeres en instancias M3 o bursátiles (T2 y T3).

## Requisitos previos de búsqueda entre clústeres
<a name="cross-cluster-search-pp"></a>

Antes de configurar la búsqueda en clústeres, asegúrese de que los dominios cumplan los siguientes requisitos:
+ Dos OpenSearch dominios o dominios de Elasticsearch en la versión 6.7 o posterior
+ Control de acceso detallado habilitado
+ Node-to-node cifrado activado
+ Si alguno de los dominios está en una VPC, los dominios deben conectarse mediante VPC Peering o Transit Gateway, y los grupos de seguridad deben permitir el tráfico entre ellos.

## Precio de búsqueda entre clústeres
<a name="cross-cluster-search-pricing"></a>

No hay ningún cargo adicional por buscar entre dominios.

## Configuración de una conexión
<a name="cross-cluster-search-set-up-connection"></a>

El dominio de “origen” hace referencia al dominio desde el que se origina una petición de búsqueda en clústeres. En otras palabras, el dominio de origen es al que envía la petición de búsqueda inicial.

El dominio “destino” es el dominio que consulta el dominio de origen.

Una conexión entre clústeres es unidireccional desde el dominio de origen hasta el dominio de destino. Esto significa que el dominio de destino no puede consultar el dominio de origen. Sin embargo, puede configurar otra conexión en la dirección opuesta.

![\[Flujo de autorización de búsqueda en clústeres\]](http://docs.aws.amazon.com/es_es/opensearch-service/latest/developerguide/images/ccs.png)


El dominio de origen crea una conexión “saliente” al dominio de destino. El dominio de destino recibe una solicitud de conexión “entrante” del dominio de origen. 

**Para configurar una conexión**

1. En el panel del dominio, seleccione un dominio y vaya a la pestaña **Conexiones**.

1. En la sección **Conexiones de salida**, seleccione **Solicitar**.

1. En **Alias de conexión**, ingrese un nombre para la conexión.

1. Elige entre conectarte a un dominio de tu Cuenta de AWS región o a otra cuenta o región.
   + Para conectarte a un clúster de tu Cuenta de AWS región, selecciona el dominio en el menú desplegable y selecciona **Solicitar**.
   + **Para conectarse a un clúster de otra región Cuenta de AWS o región, seleccione el ARN del dominio remoto y elija Solicitar.** Para conectar dominios entre regiones, ambos dominios deben ejecutar Elasticsearch versión 7.10 o posterior o. OpenSearch

1. Para omitir los clústeres no disponibles para las consultas de clústeres, seleccione **Omitir los no disponibles**. Esta configuración garantiza que las consultas entre clústeres devuelvan resultados parciales a pesar de que se produzcan errores en uno o más clústeres remotos.

1. La búsqueda entre clústeres valida primero la solicitud de conexión para asegurarse de que se cumplen los requisitos previos. Si los dominios son incompatibles, la solicitud de conexión entra en el estado `Validation failed`.

1. Una vez correctamente validada la solicitud de conexión, se envía al dominio de destino, donde tiene que aprobarse. Mientras no se obtenga la aprobación, la conexión permanecerá en el estado de `Pending acceptance`. Cuando se acepta la solicitud de conexión en el dominio de destino, el estado cambia a `Active` y el dominio de destino se vuelve disponible para consultas.
   + La página de dominio muestra el estado general del dominio y los detalles del estado de la instancia del dominio de destino. Los propietarios de dominios tienen la flexibilidad de crear, visualizar, eliminar y monitorear conexiones desde o hacia sus dominios.

Una vez establecida la conexión, se cifra todo el tráfico que circule entre los nodos de los dominios conectados. Si conecta un dominio de VPC a un dominio que no es VPC y el dominio que no es VPC es un punto de conexión público que puede recibir tráfico de Internet, el tráfico entre clústeres entre los dominios sigue cifrado y seguro. 

## Eliminación de una conexión
<a name="cross-cluster-search-remove-connection"></a>

La eliminación de una conexión detiene cualquier operación entre clústeres en sus índices.

1. En el panel del dominio, vaya a la pestaña **Conexiones**.

1. Seleccione las conexiones de dominio que desea eliminar, luego elija **Eliminar** y, a continuación, confirme la eliminación.

Puede realizar estos pasos en el dominio fuente o de destino para eliminar la conexión. Una vez quitada la conexión, seguirá visible con el estado `Deleted` durante un periodo de 15 días. 

No se puede eliminar un dominio con conexiones activas entre clústeres. Para eliminar un dominio, primero quite todas las conexiones entrantes y salientes de ese dominio. Esto es para asegurarse de tener en cuenta a los usuarios del dominio entre clústeres antes de eliminar el dominio.

## Configuración de seguridad y explicación de ejemplo
<a name="cross-cluster-search-walkthrough"></a>

1. Envíe una petición de búsqueda en clústeres al dominio de origen.

1. El dominio de origen evalúa esa solicitud en comparación con la política de acceso al dominio. Dado que la búsqueda en clústeres requiere un control de acceso detallado, recomendamos una política de acceso abierto en el dominio de origen. 

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": [
             "*"
           ]
         },
         "Action": [
           "es:ESHttp*"
         ],
         "Resource": "arn:aws:es:us-east-1:111122223333:domain/src-domain/*"
       }
     ]
   }
   ```

------
**nota**  
Si incluye índices remotos en la ruta, debe codificar la URL del URI en el ARN del dominio. Por ejemplo, use `arn:aws:es:us-east-1:123456789012:domain/my-domain/local_index,dst%3Aremote_index` en lugar de `arn:aws:es:us-east-1:123456789012:domain/my-domain/local_index,dst:remote_index`.

   Si elige utilizar una política de acceso restrictivo además de un control de acceso detallado, la política debe permitir el acceso a `es:ESHttpGet` como mínimo.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": [
             "arn:aws:iam::111122223333:user/test-user"
           ]
         },
         "Action": "es:ESHttpGet",
         "Resource": "arn:aws:es:us-east-1:111122223333:domain/src-domain/*"
       }
     ]
   }
   ```

------

1. El [control de acceso detallado](fgac.md) en el dominio de origen evalúa la solicitud:
   + ¿La solicitud está firmada con credenciales básicas IAM o HTTP válidas?
   + Si es así, ¿tiene el usuario permiso para realizar la búsqueda y acceder a los datos?

   Si la solicitud solo busca datos en el dominio de destino (por ejemplo, `dest-alias:dest-index/_search`), solo necesitará permisos en el dominio de destino. 

   Si la solicitud busca datos en ambos dominios (por ejemplo, `source-index,dest-alias:dest-index/_search`), necesita permisos en ambos dominios. 

   En el control de acceso detallado, los usuarios deben tener el permiso `indices:admin/shards/search_shards` además de los permisos `read` o `search` estándar para los índices pertinentes.

1. El dominio de origen pasa la solicitud al dominio de destino. El dominio de destino evalúa esta solicitud frente a su política de acceso al dominio. Debe incluir el permiso `es:ESCrossClusterGet` en el dominio de destino:

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "*"
         },
         "Action": "es:ESCrossClusterGet",
         "Resource": "arn:aws:es:us-east-1:111122223333:domain/dst-domain"
       }
     ]
   }
   ```

------

   Asegúrese de que el permiso `es:ESCrossClusterGet` se aplica para `/dst-domain` y no `/dst-domain/*`.

   Sin embargo, esta política mínima solo permite búsquedas en clústeres. Para realizar otras operaciones, como indexar documentos y realizar búsquedas estándar, necesita permisos adicionales. Recomendamos la siguiente política en el dominio de destino:

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": [
             "*"
           ]
         },
         "Action": [
           "es:ESHttp*"
         ],
         "Resource": "arn:aws:es:us-east-1:111122223333:domain/dst-domain/*"
       },
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "*"
         },
         "Action": "es:ESCrossClusterGet",
         "Resource": "arn:aws:es:us-east-1:111122223333:domain/dst-domain"
       }
     ]
   }
   ```

------
**nota**  
Todas las solicitudes de búsqueda entre clústeres entre dominios se cifran en tránsito de forma predeterminada como parte del cifrado. node-to-node

1. El dominio de destino realiza la búsqueda y devuelve los resultados al dominio de origen.

1. El dominio de origen combina sus propios resultados (si los hay) con los resultados del dominio de destino y los devuelve.

1. Recomendamos [Postman](https://www.postman.com/) para probar las solicitudes:
   + En el dominio de destino, indexe un documento:

     ```
     POST https://dst-domain.us-east-1.es.amazonaws.com/books/_doc/1
     
     {
       "Dracula": "Bram Stoker"
     }
     ```
   + Para consultar este índice desde el dominio de origen, incluya el alias de conexión del dominio de destino dentro de la consulta.

     ```
     GET https://src-domain.us-east-1.es.amazonaws.com/<connection_alias>:books/_search
     
     {
         ...
       "hits": [
         {
           "_index": "source-destination:books",
           "_type": "_doc",
           "_id": "1",
           "_score": 1,
           "_source": {
             "Dracula": "Bram Stoker"
           }
         }
       ]
     }
     ```

     Puede encontrar el alias de conexión en la pestaña **Conexiones** del panel de control del dominio.
   + Si configura una conexión entre `domain-a -> domain-b` con alias de conexión `cluster_b` y `domain-a -> domain-c` con alias de conexión `cluster_c`, busque `domain-a`, `domain-b` y `domain-c` de la siguiente manera:

     ```
     GET https://src-domain.us-east-1.es.amazonaws.com/local_index,cluster_b:b_index,cluster_c:c_index/_search
     {
       "query": {
         "match": {
           "user": "domino"
         }
       }
     }
     ```

     **Respuesta**

     ```
     {
       "took": 150,
       "timed_out": false,
       "_shards": {
         "total": 3,
         "successful": 3,
         "failed": 0,
         "skipped": 0
       },
       "_clusters": {
         "total": 3,
         "successful": 3,
         "skipped": 0
       },
       "hits": {
         "total": 3,
         "max_score": 1,
         "hits": [
           {
             "_index": "local_index",
             "_type": "_doc",
             "_id": "0",
             "_score": 1,
             "_source": {
               "user": "domino",
               "message": "This is message 1",
               "likes": 0
             }
           },
           {
             "_index": "cluster_b:b_index",
             "_type": "_doc",
             "_id": "0",
             "_score": 2,
             "_source": {
               "user": "domino",
               "message": "This is message 2",
               "likes": 0
             }
           },
           {
             "_index": "cluster_c:c_index",
             "_type": "_doc",
             "_id": "0",
             "_score": 3,
             "_source": {
               "user": "domino",
               "message": "This is message 3",
               "likes": 0
             }
           }
         ]
       }
     }
     ```

     Si no eligió omitir los clústeres no disponibles en la configuración de la conexión, todos los clústeres de destino que busca tienen que estar disponibles para que la petición de búsqueda se ejecute correctamente. De lo contrario, se produce un error en toda la solicitud; incluso si uno de los dominios no está disponible, la búsqueda no devuelve ningún resultado.

## OpenSearch Cuadros de mando
<a name="cross-cluster-search-dashboards"></a>

Puede visualizar datos de varios dominios conectados de la misma manera que desde un solo dominio, excepto que debe acceder a los índices remotos mediante `connection-alias:index`. Por lo tanto, su patrón de índice debe coincidir `connection-alias:index`.