我正在使用 docker 容器在我的 Ubuntu 服务器上运行 ElasticSearch 实例。 在大型插入或更新请求期间,我收到以下异常。
OriginalException:Elasticsearch.Net.ElasticsearchClientException:请求执行失败。调用:状态代码 413 来自:POST /_bulk?pretty=true&error_trace=true
听起来我需要从默认的
http.max_content_length
增加100mb
内容。
我使用以下 docker-compose 启动我的 docker 实例
version: '3.4'
services:
# Nginx proxy
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
ports:
- 80:80
- 443:443
restart: always
networks:
- nginx-proxy
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- /etc/nginx/vhost.d:/etc/nginx/vhost.d:ro
- /etc/certificates:/etc/nginx/certs
# ElasticSearch instance
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.12.0
container_name: es01
environment:
- VIRTUAL_HOST=my.elastic-domain.com
- VIRTUAL_PORT=9200
- ELASTIC_PASSWORD=mypassword
- xpack.security.enabled=true
- discovery.type=single-node
- http.max_content_length=3000mb
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
cap_add:
- IPC_LOCK
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
expose:
- 9200
networks:
- nginx-proxy
depends_on:
- nginx-proxy
volumes:
data01:
driver: local
networks:
nginx-proxy:
default:
external:
name: nginx-proxy
如您所见,我尝试通过设置环境变量来增加该值
http.max_content_length=3000mb
此外,在 Nginx 代理中,我设置了
client_max_body_size 0;
以确保代理允许无限大小。
如何使用 docker 容器设置
ElasticSearch容器的
http.max_content_length
值?
您可以修改elasticsearch.yml文件并添加
http.max_content_length=3000mb
此文件位于您的弹性 docker conntainer /config/elasticsearch.yml 中
将这一行添加到 Dockerfile 中怎么样?
RUN echo "http.max_content_length: 300M" >> /usr/share/elasticsearch/config/elasticsearch.yml