小编ste*_*eve的帖子

elasticsearch es_rejected_execution_exception

我正在尝试索引一个有 50,000 条日志的 12mb 日志文件。索引大约 30,000 条日志后,出现以下错误

[2018-04-17T05:52:48,254][INFO ][logstash.outputs.elasticsearch] retrying failed action with response code: 429 ({"type"=>"es_rejected_execution_exception", "reason"=>"rejected execution of org.elasticsearch.transport.TransportService$7@560f63a9 on EsThreadPoolExecutor[name = EC2AMAZ-1763048/bulk, queue capacity = 200, org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor@7d6ae98b[Running, pool size = 2, active threads = 2, queued tasks = 200, completed tasks = 3834]]"})
Run Code Online (Sandbox Code Playgroud)

但是,我浏览了文档和 elasticsearch 论坛,它们建议我增加 elasticsearch 批量队列的大小。我尝试使用 curl 但我无法做到这一点。

curl -XPUT localhost:9200/_cluster/settings -d '{"persistent" : {"threadpool.bulk.queue_size" : 100}}'
Run Code Online (Sandbox Code Playgroud)

增加队列大小是个好选择吗?我无法增加硬件,因为我的数据较少。

我面临的错误是由于队列大小问题还是其他原因?如果使用队列大小如何更新elasticsearch.yml中的队列大小,在el​​asticsearch.yml中更新后是否需要重新启动es?

请告诉我。谢谢你的时间

elasticsearch logstash elastic-stack

6
推荐指数
1
解决办法
1万
查看次数

Django Rest 框架:没有模型

我正在努力使用 DRF(Django Rest Framework)创建 RESTAPI。API 只是接收用户的 Twitter 句柄并返回他的 Twitter 数据。

在这里,我没有使用模型,因为它不是必需的。

我应该在这里使用序列化器吗?如果是这样为什么?现在我可以在不使用序列化器的情况下返回数据。此外,我的 API 不可通过网络浏览。我应该如何使其可网络浏览:这是 DRF 的最佳功能之一。

编辑:1

我在视图中使用函数。

@api_view(['GET'])
@csrf_exempt
def getdetails(request):

    call the twitter api
    receive the data
    return HttpResponse(JsonResponse( {'data': {'twitter_id':id,'tweets':count,'Followers':followers,'following':count_follow}}))
Run Code Online (Sandbox Code Playgroud)

在浏览器中我只看到这样的 JSON 数据。

{“数据”:{“twitter_id”:352525,“推文”:121,“关注者”:1008,“关注”:281}}

django django-views django-rest-framework

4
推荐指数
1
解决办法
9867
查看次数