Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
En el desarrollo y operación diario de Elasticsearch (ES), a menudo nos encontramos con escenarios en los que es necesario ejecutar consultas similares con frecuencia. Estas consultas pueden involucrar múltiples campos, condiciones de filtrado y análisis agregados debido a la complejidad de la lógica empresarial. Para optimizar estas operaciones y mejorar la eficiencia del desarrollo, Elasticsearch proporciona la función de plantillas de búsqueda. Este artículo explica cómo utilizar las plantillas de búsqueda de Elasticsearch para reutilizar y compartir consultas.
En el desarrollo diario, aunque la mayoría de las consultas pueden ser relativamente simples, en algunos escenarios comerciales complejos (como finanzas, medicina, etc.), es posible que una búsqueda deba pasar o devolver docenas de campos e implicar condiciones de filtrado y análisis de agregación complejos. . En este punto, escribir manualmente cada consulta no solo es ineficiente, sino también propenso a errores. Las plantillas de búsqueda son como procedimientos o funciones almacenados en MySQL. Solo necesitan definirse una vez, y la función de búsqueda se puede completar más adelante en el código llamando a la plantilla y pasando parámetros, lo que mejora en gran medida la eficiencia del desarrollo y la flexibilidad de las consultas.
La forma básica de la plantilla de búsqueda es definir un objeto JSON que contiene condiciones de consulta y pasar_search/template
Llamadas API. Por ejemplo:
GET /index_name/_search/template
{
"source": {
"query": {
"match": {
"remark": "{{kw}}"
}
},
"size": "{{size}}"
},
"params": {
"kw": "真正的数值",
"size": 100
}
}
En este ejemplo,{{kw}}
y{{size}}
es una variable en la plantilla, pasadaparams
Los objetos pasan valores específicos.
toJSON
La forma se caracteriza porsource
Utilice cadenas para definir y se requieren caracteres de escape. Por ejemplo:
GET cars/_search/template
{
"source": "{ "query": { "match": {{#toJson}}parameter{{/toJson}} }}",
"params": {
"parameter": {
"remark": "真正的数值"
}
}
}
usarjoin
El método puede concatenar los elementos de la matriz en una cadena para las condiciones de consulta. Por ejemplo:
GET index_name/_search/template
{
"source": {
"query": {
"match": {
"remark": "{{#join delimiter=' '}}kw{{/join delimiter=' '}}"
}
}
},
"params": {
"kw": ["大众", "标致", "奔驰", "宝马"]
}
}
Puede establecer valores predeterminados para los parámetros en la plantilla. Si el parámetro no se pasa al llamar, se utilizará el valor predeterminado. Por ejemplo:
GET index_name/_search/template
{
"source": {
"query": {
"range": {
"price": {
"gte": "{{start}}",
"lte": "{{end}}{{^end}}200000{{/end}}"
}
}
}
},
"params": {
"start": 100000
}
}
Para reutilizar la plantilla, podemos guardarla en Elasticsearch. Al especificar el nombre de la plantilla, es conveniente llamarla repetidamente más tarde. Por ejemplo:
POST _scripts/my_test_template
{
"script": {
"lang": "mustache",
"source": {
"query": {
"match": {
"field_name": "{{kw}}"
}
}
}
}
}
Al llamar a la plantilla, paseid
Para especificar una plantilla específica y pasar los parámetros correspondientes. Por ejemplo:
GET index_name/_search/template
{
"id": "my_test_template",
"params": {
"kw": "自定义template的参数值"
}
}
La información de la plantilla definida se puede consultar mediante solicitudes GET, por ejemplo:
GET _scripts/my_test_template
Si necesita eliminar una plantilla definida, puede utilizar una solicitud DELETE, por ejemplo:
DELETE _scripts/my_test_template
Elasticsearch proporciona_render/template
API para validar la plantilla.