2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Elasticsearchin (ES) päivittäisessä kehittämisessä ja käytössä kohtaamme usein skenaarioita, joissa samanlaisia kyselyitä on suoritettava usein. Nämä kyselyt voivat sisältää useita kenttiä, suodatinehtoja ja aggregaattianalyysiä liiketoimintalogiikan monimutkaisuuden vuoksi. Näiden toimintojen optimoimiseksi ja kehittämisen tehokkuuden parantamiseksi Elasticsearch tarjoaa hakupohjien toiminnon. Tässä artikkelissa kerrotaan, kuinka voit käyttää Elasticsearchin hakumalleja kyselyjen uudelleenkäyttöön ja jakamiseen.
Vaikka useimmat kyselyt voivat olla suhteellisen yksinkertaisia päivittäisessä kehityksessä, joissakin monimutkaisissa liiketoimintaskenaarioissa (kuten rahoitus, lääketiede jne.) haun on ehkä suoritettava tai palautettava kymmeniä kenttiä, ja siihen voi liittyä monimutkaisia suodatusehtoja ja analyysiä . Tässä vaiheessa jokaisen kyselyn manuaalinen kirjoittaminen ei ole vain tehotonta, vaan myös virhealtista. Hakumallit ovat kuin talletettuja proseduureja tai toimintoja MySQL:ssä. Ne tarvitsee määritellä vain kerran, ja hakutoiminto voidaan suorittaa myöhemmin koodissa kutsumalla mallia ja antamalla parametreja, mikä parantaa huomattavasti kehityksen tehokkuutta ja kyselyn joustavuutta.
Hakumallin perusmuoto on määrittää JSON-objekti, joka sisältää kyselyehdot ja läpäisyn_search/template
API-kutsut. Esimerkiksi:
GET /index_name/_search/template
{
"source": {
"query": {
"match": {
"remark": "{{kw}}"
}
},
"size": "{{size}}"
},
"params": {
"kw": "真正的数值",
"size": 100
}
}
Tässä esimerkissä{{kw}}
ja{{size}}
on muuttuja mallissa, hyväksyttyparams
Objektit välittävät tietyt arvot.
toJSON
Muodolle on ominaistasource
Käytä merkkijonoja määrittämiseen, ja pakottavat merkit ovat pakollisia. Esimerkiksi:
GET cars/_search/template
{
"source": "{ "query": { "match": {{#toJson}}parameter{{/toJson}} }}",
"params": {
"parameter": {
"remark": "真正的数值"
}
}
}
käyttääjoin
Menetelmä voi ketjuttaa taulukon elementit merkkijonoksi kyselyehtoja varten. Esimerkiksi:
GET index_name/_search/template
{
"source": {
"query": {
"match": {
"remark": "{{#join delimiter=' '}}kw{{/join delimiter=' '}}"
}
}
},
"params": {
"kw": ["大众", "标致", "奔驰", "宝马"]
}
}
Voit asettaa mallissa oletusarvoja parametreille, jos parametria ei välitetä kutsuttaessa, oletusarvoa käytetään. Esimerkiksi:
GET index_name/_search/template
{
"source": {
"query": {
"range": {
"price": {
"gte": "{{start}}",
"lte": "{{end}}{{^end}}200000{{/end}}"
}
}
}
},
"params": {
"start": 100000
}
}
Jotta mallia voidaan käyttää uudelleen, voimme tallentaa sen Elasticsearchiin. Määrittämällä mallin nimen on kätevää kutsua sitä toistuvasti myöhemmin. Esimerkiksi:
POST _scripts/my_test_template
{
"script": {
"lang": "mustache",
"source": {
"query": {
"match": {
"field_name": "{{kw}}"
}
}
}
}
}
Kun soitat malliin, ohitaid
Voit määrittää tietyn mallin ja välittää vastaavat parametrit. Esimerkiksi:
GET index_name/_search/template
{
"id": "my_test_template",
"params": {
"kw": "自定义template的参数值"
}
}
Määritettyjä mallitietoja voidaan tiedustella GET-pyyntöjen kautta, esimerkiksi:
GET _scripts/my_test_template
Jos sinun on poistettava määritetty malli, voit käyttää DELETE-pyyntöä, esimerkiksi:
DELETE _scripts/my_test_template
Elasticsearch tarjoaa_render/template
API mallin vahvistamiseen.