小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

ES API用法之script (一)

 BIGDATA云 2023-04-17 發(fā)布于美國

在Elasticsearch中,可以使用Script來動態(tài)地處理和操作數(shù)據(jù)。下面是幾個(gè)常見的使用場景和示例:

  1. 更新文檔的某個(gè)字段:

可以使用update API和inline script來更新文檔的某個(gè)字段。例如,以下請求將文檔的“count”字段增加1:

POST /my_index/_update/1
{
  "script": {
    "source": "ctx._source.count += 1"
  }
}
  1. 刪除文檔的某個(gè)字段:

可以使用update API和inline script來刪除文檔的某個(gè)字段。例如,以下請求將文檔的“name”字段刪除:

POST /my_index/_update/1
{
  "script": {
    "source": "ctx._source.remove('name')"
  }
}
  1. 計(jì)算文檔的得分:

可以使用function score query和script score來計(jì)算文檔的得分。例如,以下請求將文檔的得分設(shè)置為“count”字段的值:

GET /my_index/_search
{
  "query": {
    "function_score": {
      "query": {
        "match_all": {}
      },
      "script_score": {
        "script": {
          "source": "return doc['count'].value"
        }
      }
    }
  }
}
  1. 計(jì)算兩個(gè)字段的加和:

可以使用script fields來計(jì)算兩個(gè)字段的加和并將結(jié)果返回。例如,以下請求返回一個(gè)新的“sum”字段,它是“count”字段和“value”字段的加和:

GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "script_fields": {
    "sum": {
      "script": {
        "source": "doc['count'].value + doc['value'].value"
      }
    }
  }
}
  1. 使用腳本轉(zhuǎn)換聚合結(jié)果:

可以使用script來轉(zhuǎn)換聚合結(jié)果。例如,以下請求將聚合結(jié)果中的“value”字段除以2:

GET /my_index/_search
{
  "size": 0,
  "aggs": {
    "my_agg": {
      "terms": {
        "field": "name.keyword"
      },
      "aggs": {
        "my_avg": {
          "avg": {
            "field": "count"
          }
        }
      }
    }
  },
  "script_fields": {
    "my_avg_divided_by_2": {
      "script": {
        "source": "doc['my_avg'].value / 2"
      }
    }
  }
}
動態(tài)生成文檔:
可以使用bulk API和inline script來動態(tài)生成文檔。例如,以下請求將使用腳本生成5個(gè)文檔:
POST /my_index/_bulk
{ "index": {}}
{ "script": { "source": "emit([ 'name': 'foo' + i, 'value': i ])"}, "params": { "i": 0 }}
{ "index": {}}
{ "script": { "source": "emit([ 'name': 'foo' + i, 'value': i ])"}, "params": { "i": 1 }}
{ "index": {}}
{ "script": { "source": "emit([ 'name': 'foo' + i, 'value': i ])"}, "params": { "i": 2 }}
{ "index": {}}
{ "script": { "source": "emit([ 'name': 'foo' + i, 'value': i ])"}, "params": { "i": 3 }}
{ "index": {}}
{ "script": { "source": "emit([ 'name': 'foo' + i, 'value': i ])"}, "params": { "i": 4 }}
自定義計(jì)算字段:
可以使用scripted fields來自定義計(jì)算字段。例如,以下請求返回一個(gè)新的“new_count”字段,它是“count”字段除以2的值:
GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "script_fields": {
    "new_count": {
      "script": {
        "lang": "painless",
        "source": "doc['count'].value / 2"
      }
    }
  }
}
動態(tài)過濾文檔:
可以使用scripted filters來動態(tài)過濾文檔。例如,以下請求將使用腳本過濾掉“name”字段以“foo”開頭的文檔:
GET /my_index/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "script": {
            "script": {
              "source": "doc['name.keyword'].value.startsWith('foo')"
            }
          }
        }
      ]
    }
  }
}
以上是一些其他的使用場景和示例,Script在Elasticsearch中具有非常廣泛的應(yīng)用,可以通過Script實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)處理和操作。
還有嗎?
是的,Script還有一些其他的用法和示例,包括:
聚合分析:
可以在聚合分析中使用Script來計(jì)算分析結(jié)果。例如,以下請求使用Script來計(jì)算“price”字段的平均值:
GET /my_index/_search
{
  "aggs": {
    "avg_price": {
      "avg": {
        "script": {
          "source": "doc['price'].value"
        }
      }
    }
  }
}
更新文檔:
可以使用Script更新文檔的某些字段。例如,以下請求將更新id為1的文檔的“name”字段:
POST /my_index/_update/1
{
  "script": {
    "source": "ctx._source.name = 'new_name'"
  }
}
排序:
可以在排序中使用Script來計(jì)算排序值。例如,以下請求使用Script來按照“name”字段的長度排序:
GET /my_index/_search
{
  "sort": [
    {
      "_script": {
        "type": "number",
        "script": {
          "source": "doc['name.keyword'].value.length()"
        },
        "order": "asc"
      }
    }
  ]
}
自定義評分:
可以在查詢中使用Script來自定義評分。例如,以下請求使用Script來計(jì)算文檔的評分:
GET /my_index/_search
{
  "query": {
    "function_score": {
      "query": {
        "match_all": {}
      },
      "functions": [
        {
          "script_score": {
            "script": {
              "source": "doc['price'].value / doc['popularity'].value"
            }
          }
        }
      ],
      "score_mode": "multiply"
    }
  }
}

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多