Open Source, Open Future!
  menu
107 文章
ღゝ◡╹)ノ❤️

elasticsearch---groovy

简介

elasticsearch 有内置的脚本支持,可以基于groovy脚本实现复杂的操作。

数据准备

测试数据

基本操作

1、将 id 为1 的商品降价100元:

GET /product/sku/1/_update
{
  "script": "ctx._source.price-=100"
}

2、将 id 为1 的商品名改为:"huawei999":

GET /product/sku/1/_update
{
  "script": "ctx._source.name='huawei999'"
}

3、将 id 为1 的商品增加标签 "促销":

GET /product/sku/1/_update

{
  "script": {
    "source":"ctx._source.tag.add(params.tag)",
    "params":{"tag":"促销"}
  }
}

4、将 id 为 1 的商品删除标签 "促销":

GET /product/sku/1/_update
{
  "script": {
    "source":"ctx._source.tag.remove(ctx._source.tag.indexOf(params.tag))",
    "params":{"tag":"促销"}
  }
}

5、使用upsert 更新商品信息,商品不存在时则新建商品:

GET /product/sku/4/_update
{
  "script": "ctx._source.stock+=100",
  "upsert": {
    "name": "huawei99",
    "category": "phone",
    "brand": "huawei",
    "price": 0,
    "stock": 0,
    "tag": ["新品"],
    "delete": false,
    "desc": "abc,def",
    "create_time": "2015-05-01",
    "modify_time": "2015-05-10"
  }
}

查询商品:

  "_source": {

    "name": "huawei99",
    "category": "phone",
    "brand": "huawei",
    "price": 0,
    "stock": 0,
    "tag": [
      "新品"
    ],
    "delete": false,
    "desc": "abc,def",
    "create_time": "2015-05-01",
    "modify_time": "2015-05-10"
  }

再次执行更新,查询商品:

image.png