le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Nello sviluppo e nel funzionamento quotidiano di Elasticsearch (ES), incontriamo spesso scenari in cui query simili devono essere eseguite frequentemente. Queste query possono coinvolgere più campi, condizioni di filtro e analisi aggregate a causa della complessità della logica aziendale. Per ottimizzare queste operazioni e migliorare l'efficienza dello sviluppo, Elasticsearch fornisce la funzione di modelli di ricerca. Questo articolo spiega come utilizzare i modelli di ricerca di Elasticsearch per riutilizzare e condividere query.
Nello sviluppo quotidiano, sebbene la maggior parte delle query possa essere relativamente semplice, in alcuni scenari aziendali complessi (come finanza, medicina, ecc.), una ricerca potrebbe dover passare o restituire dozzine di campi e comportare complesse condizioni di filtraggio e analisi di aggregazione . A questo punto, scrivere manualmente ogni query non solo è inefficiente, ma anche soggetto a errori. I modelli di ricerca sono come procedure o funzioni memorizzate in MySQL. Devono essere definiti solo una volta e la funzione di ricerca può essere completata successivamente nel codice chiamando il modello e passando i parametri, il che migliora notevolmente l'efficienza dello sviluppo e la flessibilità delle query.
La forma base del modello di ricerca consiste nel definire un oggetto JSON contenente le condizioni della query e il passaggio_search/template
Chiamate API. Per esempio:
GET /index_name/_search/template
{
"source": {
"query": {
"match": {
"remark": "{{kw}}"
}
},
"size": "{{size}}"
},
"params": {
"kw": "真正的数值",
"size": 100
}
}
In questo esempio,{{kw}}
E{{size}}
è una variabile nel modello, passataparams
Gli oggetti trasmettono valori specifici.
toJSON
La forma è caratterizzata dasource
Utilizzare le stringhe per definire e sono richiesti caratteri di escape. Per esempio:
GET cars/_search/template
{
"source": "{ "query": { "match": {{#toJson}}parameter{{/toJson}} }}",
"params": {
"parameter": {
"remark": "真正的数值"
}
}
}
utilizzojoin
Il metodo può concatenare gli elementi dell'array in una stringa per le condizioni della query. Per esempio:
GET index_name/_search/template
{
"source": {
"query": {
"match": {
"remark": "{{#join delimiter=' '}}kw{{/join delimiter=' '}}"
}
}
},
"params": {
"kw": ["大众", "标致", "奔驰", "宝马"]
}
}
È possibile impostare valori predefiniti per i parametri nel modello. Se il parametro non viene passato durante la chiamata, verrà utilizzato il valore predefinito. Per esempio:
GET index_name/_search/template
{
"source": {
"query": {
"range": {
"price": {
"gte": "{{start}}",
"lte": "{{end}}{{^end}}200000{{/end}}"
}
}
}
},
"params": {
"start": 100000
}
}
Per riutilizzare il modello, possiamo salvarlo in Elasticsearch. Specificando il nome del modello, è conveniente richiamarlo più volte in seguito. Per esempio:
POST _scripts/my_test_template
{
"script": {
"lang": "mustache",
"source": {
"query": {
"match": {
"field_name": "{{kw}}"
}
}
}
}
}
Quando chiami il modello, passaid
Per specificare un modello specifico e passare i parametri corrispondenti. Per esempio:
GET index_name/_search/template
{
"id": "my_test_template",
"params": {
"kw": "自定义template的参数值"
}
}
Le informazioni sul modello definito possono essere interrogate tramite richieste GET, ad esempio:
GET _scripts/my_test_template
Se è necessario eliminare un modello definito, è possibile utilizzare una richiesta DELETE, ad esempio:
DELETE _scripts/my_test_template
Elasticsearch fornisce_render/template
API per convalidare il modello.