90 lines
1.8 KiB
JavaScript
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
|