URL base:
https://api.opensearch.prod.trysolved.com/Índice:
incidents_v1Auth:
Usa Basic Auth con tu usuario y contraseña de OpenSearch.
Autenticación básicaUtiliza la cabecera HTTP Authorization así:
Authorization: Basic <base64(usuario:contraseña)>Para crear el string en formato usuario:contraseña codificado en Base64 (usado en el header Authorization: Basic), ejecuta el siguiente comando según tu sistema operativo:
En Linux/macOS (bash):
echo -n 'usuario:contraseña' | base64 En Windows (PowerShell):
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("usuario:contraseña"))
Endpoint para consultasPara buscar en el índice:
POST https://api.opensearch.prod.trysolved.com/incidents_v1/_searchCabeceras:
Content-Type: application/json
Authorization: Basic <base64 string>
Campos que puedes consultarDesde tu función de indexación, aquí tienes los campos clave:
|
| Notas de tipo de campo |
| string | ID del incidente |
| string | Categoría del incidente |
| string | ID de la empresa asociada |
| ISO date | Fecha de creación del incidente |
| string | Descripción (analizada) |
| string | Campo de búsqueda sin distinción de mayúsculas |
| string | Planta/ubicación |
| string | Nivel de prioridad |
| string | Estado del incidente |
| string | ID de la plantilla usada |
| string | ID de referencia externa |
| string | Tipo de producto |
| object | Campos de info de usuario como |
Consultas de ejemplo
Coincidir con todos los incidentesPOST /incidents_v1/_search
{
"query": {
"match_all": {}
},
"size": 10
}
Filtrar por estadoPOST /incidents_v1/_search
{
"query": {
"term": {
"status.keyword": "open"
}
}
}
Buscar por categoría y prioridadPOST /incidents_v1/_search
{
"query": {
"bool": {
"must": [
{ "term": { "category.keyword": "safety" } },
{ "term": { "priority": 0 } }
]
}
}
}
Búsqueda de texto completo en la descripciónPOST /incidents_v1/_search
{
"query": {
"match": {
"description": "chemical spill"
}
}
}
Filtrar por rango de fechasPOST /incidents_v1/_search
{
"query": {
"range": {
"creationDate": {
"gte": "2024-01-01T00:00:00Z",
"lte": "2024-12-31T23:59:59Z"
}
}
}
}
Filtrar por email del creadorPOST /incidents_v1/_search
{
"query": {
"term": {
"creator.email.keyword": "jane.doe@example.com"
}
}
}
Contar incidentes por estadoPOST /incidents_v1/_search
{
"size": 0,
"aggs": {
"by_status": {
"terms": {
"field": "status.keyword"
}
}
}
}
Ejemplo cURLcurl -X POST "https://api.opensearch.prod.trysolved.com/incidents_v1/_search" \
-u 'your_username:your_password' \
-H "Content-Type: application/json" \
-d '{
"query": {
"term": { "status.keyword": "open" }
}
}'
ConsejosUsa .keyword para buscar cadenas exactas.
Usa "size" y "from" para paginación.
Usa "match" para búsquedas difusas o de texto completo.
Limita los campos devueltos con _source, por ejemplo:
"_source": ["id", "status", "priority"]
Aquí tienes una colección de postman con los ejemplos anteriores
Para usarlo, sigue estos pasos.
Guarda el siguiente contenido json en un archivo (por ejemplo: postman_incidents.json)
Importa este archivo en Postman
Haz clic en el nombre de la colección que acabas de importar y en Authorization pon tu username y password
Elige la colección que quieras probar (por ejemplo Filter by Status) entra en Body así puedes ver el cuerpo de la consulta y editarlo si quieres.
Haz clic en Send
{
"info": {
"name": "OpenSearch API - incidents_v1",
"description": "Consultas de la API de OpenSearch para el índice `incidents_v1` usando Basic Auth.",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "1. Coincidir con todos los incidentes",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"query\": { \"match_all\": {} },\n \"size\": 10\n}"
},
"url": {
"raw": "{{baseURL}}/incidents_v1/_search",
"host": [
"{{baseURL}}"
],
"path": [
"incidents_v1",
"_search"
]
}
},
"response": []
},
{
"name": "2. Filtrar por estado",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"query\": {\n \"term\": { \"status.keyword\": \"open\" }\n }\n}"
},
"url": {
"raw": "{{baseURL}}/incidents_v1/_search",
"host": [
"{{baseURL}}"
],
"path": [
"incidents_v1",
"_search"
]
}
},
"response": []
},
{
"name": "3. Filtrar por categoría y prioridad",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"query\": {\n \"bool\": {\n \"must\": [\n { \"term\": { \"category.keyword\": \"safety\" } },\n { \"term\": { \"priority\": 0 } }\n ]\n }\n }\n}"
},
"url": {
"raw": "{{baseURL}}/incidents_v1/_search",
"host": [
"{{baseURL}}"
],
"path": [
"incidents_v1",
"_search"
]
}
},
"response": []
},
{
"name": "4. Búsqueda de texto completo en la descripción",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"query\": {\n \"match\": {\n \"description\": \"chemical spill\"\n }\n }\n}"
},
"url": {
"raw": "{{baseURL}}/incidents_v1/_search",
"host": [
"{{baseURL}}"
],
"path": [
"incidents_v1",
"_search"
]
}
},
"response": []
},
{
"name": "5. Rango de fechas por fecha de creación",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"query\": {\n \"range\": {\n \"creationDate\": {\n \"gte\": \"2024-01-01T00:00:00Z\",\n \"lte\": \"2024-12-31T23:59:59Z\"\n }\n }\n }\n}"
},
"url": {
"raw": "{{baseURL}}/incidents_v1/_search",
"host": [
"{{baseURL}}"
],
"path": [
"incidents_v1",
"_search"
]
}
},
"response": []
},
{
"name": "6. Filtrar por email del creador",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"query\": {\n \"term\": {\n \"creator.email.keyword\": \"jane.doe@example.com\"\n }\n }\n}"
},
"url": {
"raw": "{{baseURL}}/incidents_v1/_search",
"host": [
"{{baseURL}}"
],
"path": [
"incidents_v1",
"_search"
]
}
},
"response": []
},
{
"name": "7. Agregación por estado",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"size\": 0,\n \"aggs\": {\n \"by_status\": {\n \"terms\": {\n \"field\": \"status.keyword\"\n }\n }\n }\n}"
},
"url": {
"raw": "{{baseURL}}/incidents_v1/_search",
"host": [
"{{baseURL}}"
],
"path": [
"incidents_v1",
"_search"
]
}
},
"response": []
}
],
"auth": {
"type": "basic",
"basic": [
{
"key": "password",
"value": "",
"type": "string"
},
{
"key": "username",
"value": "",
"type": "string"
}
]
},
"event": [
{
"listen": "prerequest",
"script": {
"type": "text/javascript",
"packages": {},
"exec": [
""
]
}
},
{
"listen": "test",
"script": {
"type": "text/javascript",
"packages": {},
"exec": [
""
]
}
}
],
"variable": [
{
"key": "baseURL",
"value": "https://api.opensearch.prod.trysolved.com",
"type": "default"
}
]
}
Consulta la referencia oficial de la API de OpenSearch para más detalles.