如何在elasticsearch中设置计数器字段

时间:2014-11-20 11:43:03

标签: node.js elasticsearch

我需要增加字段' post_count'弹性搜索中包含+1 例如:在我的情况下当我点击一个按钮时,post_count需要增加

   "hits": {
      "total": 1,
      "max_score": 1,
      "hits": [
         {
            "_index": "test_work",
            "_type": "user",
            "_id": "d989dd8629f8b6cc59faf8a1aa2328c8",
            "_score": 1,
            "_source": {
               "first_name": "test",
               "last_name": "amt",
               "post_count":0
            }
         }
      ]

是否有任何单个查询在每次更新中增加post_count

2 个答案:

答案 0 :(得分:4)

尝试这样的事情:

POST /test_work/user/d989dd8629f8b6cc59faf8a1aa2328c8/_update
{
   "script" : "ctx._source.post_count+=1"
}

答案 1 :(得分:2)

您还可以使用脚本中的参数控制计数器的增量。 如果您使用的是ES 1.3+,则可能会出现“禁用动态脚本”的错误,为了避免这种情况,您需要指定脚本语言,在本例中为groovy。

POST /test_work/user/d989dd8629f8b6cc59faf8a1aa2328c8/_update
{
    "script" : "ctx._source.post_count+=increment",
    "params" : {
        "increment" : 4
    },"lang":"groovy"
}