elastic_tutorial/The Elasticsearch Documentation/6_script-Advance/1_Update_Scripts.es
2025-04-09 09:37:23 +03:30

140 lines
4.4 KiB
Erlang
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

POST mainindex/_update_by_query
{
"script": {
"source": "ctx._source.allwords = ctx._source.allwords.replace('', ';');ctx._source.allwords = ctx._source.allwords.replace('', ';');ctx._source.allwords = ctx._source.allwords.replace('،', ';');ctx._source.allwords = ctx._source.allwords.replace(',', ';');",
"lang": "painless"
},
"query": {
"bool": {
"must": [
{
"exists": {
"field":"allwords"
}
}
],
"must_not": [
{
"bool": {
"should": [
{
"term": {
"allwords.keyword": {
"value": ""
}
}
},
{
"term": {
"allwords.keyword": {
"value": ";"
}
}
}
]
}
}
]
}
}
}
// query:
// گزینه اول: فیلد allwords باید وجود داشته باشد
// گزینه دوم: allwords.keyword نباید خالی باشد یا ; باشد
// Script:
// جایگزینی کاراکتر های - و , و ، با ;
// نتیحه: هر کجا که فیلد allwords وجود داشته باشد و خالی یا ; نباشد، کاراکتر هایی در آن ریپلیس خواهند شد
POST my-index/_update_by_query
{
"script": {
"source": "ctx._source.color.add('pink') ",
"lang": "painless"
},
"query": {
"bool": {
"must": [
{
"exists": {
"field": "color"
}
}
]
}
}
}
// add To a array
POST my-index/1/_update_by_query
{
"script": {
"source": "ctx._source.array.add(['entity_id' :1, 'entity_title' : 'Title,'realation_type' : 'realation_type']); ",
"lang": "painless"
}
}
// ساخت آرای ای از آبجکت ها
POST my-index/1/_update_by_query
{
"script": {
"source": "try {String year = ''; if(ctx._source.eb_year != null) year =ctx._source.eb_year.trim().replace('/', '').replace('هـ', ''); int d = Integer.parseInt(year);ctx._source.eb_year = d;} catch (NumberFormatException nfe) {ctx._source.remove('eb_year'); }",
"lang": "painless"
}
}
// این اسکریپت در صورتی که فیلد eb_year int نباشد آن را حذف میکند
POST mainindex/_update_by_query
{
"script": {
"source": " String allwords = ctx._source.allwords; def a_chars = allwords.toCharArray(); int chars_len = a_chars.length; ArrayList result = new ArrayList(); int last_dot = chars_len; for(int i = chars_len -1; i>=-1; i--) { if (i == -1 || a_chars[i] == (char) ';' ){ String t1 = allwords.substring(i+ 1, last_dot).trim(); if(t1 != '') result.add(t1); last_dot = i; } } ctx._source.tags = result; ",
"lang": "painless"
},
"query": {
"bool": {
"must": [
{
"exists": {
"field":"allwords"
}
}
],
"must_not": [
{
"bool": {
"should": [
{
"term": {
"allwords.keyword": {
"value": ""
}
}
},
{
"term": {
"allwords.keyword": {
"value": ";"
}
}
}
]
}
}
]
}
}
}
// اگر فیلد allwords وجود داشته باشد، اسکریپت اجرا میشود
// String allwords = ctx._source.allwords; def a_chars = allwords.toCharArray(); int chars_len = a_chars.length;
// chars_len = تعداد کاراکتر های allwords
// ArrayList result = new ArrayList(); int last_dot = chars_len;
// result --> یک آرایه
// for(int i = chars_len -1; i>=-1; i--) { if (i == -1 || a_chars[i] == (char) ';' ){String t1 = allwords.substring(i+ 1, last_dot).trim(); if(t1 != '') result.add(t1);last_dot = i;
// این کد allwords را از آخر به اول میخواند و با ; اسپلیت میکند و در آرایه result میریزد
// البته میتوان از
// a_chars,split(';')
// نیز استفاده کرد