如何使弹性增加在每次更新时都成为计数器



我想在elasticsearch上创建一个(url,visits)索引,每次调用函数myfunction时,该索引将保存特定URL的访问次数。我该怎么做?到目前为止,我已经设法创建了插入,但我无法增加计数器。

def myfunction():
    a = elasticsearch.index(index='test_index_1' , doc_type='test_doc_type' , id="url" , body={'data' : {'visits' : 1} , 'doc_as_upsert' : True})
    app.logger.info(a)
    b = elasticsearch.update(index='test_index_1' , doc_type='test_doc_type' , id="url" , body={
        'script' : 'ctx._source.data.visits += visit',
        'params' : {
            'visit' : 1
        }
    })
    app.logger.info(b)

您应该使用 upsert 参数。如果包含 id:url 的文档尚不存在,则应使用默认visits:1创建:

POST /test_index_1/test_doc_type/{id}/_update
{
   "script" : "ctx._source.visits+=1",
   "upsert": {
       "visits": 1
   }
}

相关内容

  • 没有找到相关文章

最新更新