elastic_tutorial/The Elasticsearch Documentation/5_script-Medium/2_first_scripts.es
2025-04-09 09:37:23 +03:30

90 lines
1.8 KiB
JavaScript

//
PUT my-index
PUT my-index/_doc/1
{
"my_field": 5
}
GET my-index/_search
{
"script_fields": {
"my_doubled_field": {
"script": {
"source": "doc['my_field'].value * params['multiplier']",
"params": {
"multiplier": 2
}
}
}
}
}
// ساخت یک فیلد مجازی به نام my_doubled_field
// اجرای اسکریپت
// script -> source ==> مقدار داخل فیلد
// doc['my_field'].value * params['multiplier']
// از این doc, فیلد my_field را بگیر و مقدارش را ضرب بر پارامتر multiplier بکن
// نتیجه: my_doubled_field -> 10
// به صورت
// doc['my_field'].value * params.get('multiplier')
// هم میتوان نوشت
POST _scripts/calculate-score
{
"script": {
"lang": "painless",
"source": "Math.log(_score * 2) + params['my_modifier']"
}
}
// elasticsearch یک index دارد به نام _scripts
// میتوانید در این ایندکس script ذخیره کنید تا بعدا استفاده کنید
// calculate-score -> آی دی script
// Math.log(_score * 2) -> لوگاریتم امتیاز * 2
// + params['my_modifier'] --> + پارامتر my_modifier
GET _scripts/calculate-score
// گرفتن اسکریپت
GET my-index/_search
{
"query": {
"script_score": {
"query": {
"match": {
"my_field": 5
}
},
"script": {
"id": "calculate-score", // id of saved script
"params": {
"my_modifier": 2
}
}
}
}
}
// change score to Math.log(_score * 2) + params['my_modifier']
DELETE _scripts/calculate-score
// DELETE a script
POST my-index/_doc/1
{
"colors": [
"blue",
"red",
"green",
"yellow"
]
}
// Insert a Array