τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Στην καθημερινή ανάπτυξη και λειτουργία του Elasticsearch (ES), συναντάμε συχνά σενάρια όπου παρόμοια ερωτήματα πρέπει να εκτελούνται συχνά. Αυτά τα ερωτήματα ενδέχεται να περιλαμβάνουν πολλά πεδία, συνθήκες φίλτρου και συγκεντρωτική ανάλυση λόγω της πολυπλοκότητας της επιχειρηματικής λογικής. Προκειμένου να βελτιστοποιηθούν αυτές οι λειτουργίες και να βελτιωθεί η αποτελεσματικότητα ανάπτυξης, το Elasticsearch παρέχει τη λειτουργία προτύπων αναζήτησης. Αυτό το άρθρο εξηγεί πώς να χρησιμοποιήσετε τα πρότυπα αναζήτησης του Elasticsearch για να επαναχρησιμοποιήσετε και να μοιραστείτε ερωτήματα.
Στην καθημερινή ανάπτυξη, αν και τα περισσότερα ερωτήματα μπορεί να είναι σχετικά απλά, σε ορισμένα σύνθετα επιχειρηματικά σενάρια (όπως οικονομικά, ιατρική κ.λπ.), μια αναζήτηση μπορεί να χρειαστεί να περάσει ή να επιστρέψει δεκάδες πεδία και να περιλαμβάνει περίπλοκες συνθήκες φιλτραρίσματος και συνάθροιση . Σε αυτό το σημείο, η μη αυτόματη εγγραφή κάθε ερωτήματος δεν είναι μόνο αναποτελεσματική, αλλά και επιρρεπής σε σφάλματα. Τα πρότυπα αναζήτησης είναι σαν αποθηκευμένες διαδικασίες ή συναρτήσεις στη MySQL. Χρειάζεται να οριστούν μόνο μία φορά και η συνάρτηση αναζήτησης μπορεί να ολοκληρωθεί αργότερα στον κώδικα καλώντας το πρότυπο και περνώντας παραμέτρους, γεγονός που βελτιώνει σημαντικά την αποτελεσματικότητα της ανάπτυξης και την ευελιξία των ερωτημάτων.
Η βασική μορφή του προτύπου αναζήτησης είναι να ορίσει ένα αντικείμενο JSON που περιέχει συνθήκες ερωτήματος και πάσο_search/template
Κλήσεις API. Για παράδειγμα:
GET /index_name/_search/template
{
"source": {
"query": {
"match": {
"remark": "{{kw}}"
}
},
"size": "{{size}}"
},
"params": {
"kw": "真正的数值",
"size": 100
}
}
Σε αυτό το παράδειγμα,{{kw}}
και{{size}}
είναι μια μεταβλητή στο πρότυπο, πέρασεparams
Τα αντικείμενα περνούν συγκεκριμένες τιμές.
toJSON
Η μορφή χαρακτηρίζεται απόsource
Χρησιμοποιήστε συμβολοσειρές για να ορίσετε και απαιτούνται χαρακτήρες διαφυγής. Για παράδειγμα:
GET cars/_search/template
{
"source": "{ "query": { "match": {{#toJson}}parameter{{/toJson}} }}",
"params": {
"parameter": {
"remark": "真正的数值"
}
}
}
χρήσηjoin
Η μέθοδος μπορεί να συνενώσει τα στοιχεία του πίνακα σε μια συμβολοσειρά για συνθήκες ερωτήματος. Για παράδειγμα:
GET index_name/_search/template
{
"source": {
"query": {
"match": {
"remark": "{{#join delimiter=' '}}kw{{/join delimiter=' '}}"
}
}
},
"params": {
"kw": ["大众", "标致", "奔驰", "宝马"]
}
}
Μπορείτε να ορίσετε προεπιλεγμένες τιμές για τις παραμέτρους στο πρότυπο Εάν η παράμετρος δεν μεταβιβαστεί κατά την κλήση, θα χρησιμοποιηθεί η προεπιλεγμένη τιμή. Για παράδειγμα:
GET index_name/_search/template
{
"source": {
"query": {
"range": {
"price": {
"gte": "{{start}}",
"lte": "{{end}}{{^end}}200000{{/end}}"
}
}
}
},
"params": {
"start": 100000
}
}
Για να επαναχρησιμοποιήσουμε το πρότυπο, μπορούμε να το αποθηκεύσουμε στο Elasticsearch. Καθορίζοντας το όνομα του προτύπου, είναι βολικό να το καλείτε επανειλημμένα αργότερα. Για παράδειγμα:
POST _scripts/my_test_template
{
"script": {
"lang": "mustache",
"source": {
"query": {
"match": {
"field_name": "{{kw}}"
}
}
}
}
}
Όταν καλείτε το πρότυπο, περάστεid
Για να καθορίσετε ένα συγκεκριμένο πρότυπο και να περάσετε τις αντίστοιχες παραμέτρους. Για παράδειγμα:
GET index_name/_search/template
{
"id": "my_test_template",
"params": {
"kw": "自定义template的参数值"
}
}
Μπορείτε να αναζητήσετε πληροφορίες για καθορισμένα πρότυπα μέσω αιτημάτων GET, για παράδειγμα:
GET _scripts/my_test_template
Εάν πρέπει να διαγράψετε ένα καθορισμένο πρότυπο, μπορείτε να χρησιμοποιήσετε ένα αίτημα DELETE, για παράδειγμα:
DELETE _scripts/my_test_template
Το Elasticsearch παρέχει_render/template
API για την επικύρωση του προτύπου.