1. 背景
(1) 客戶反映es查詢只能返回10000個數據,而需求時返回1.9W個數據,因此需要設置對應索引的默認返回數index.max_result_window
(2) 給客戶部署的服務以docker-compose啟動,其配置文件docker-compose.yml文件如下,其中es版本為5.6.16

version: '2'
services:
aimind_mongodb:
image: mongo
container_name: aimind_mongodb
volumes:
- "/data/configdb/:/data/configdb"
- "/data/db/:/data/db"
restart: always
ports:
- "27017:27017"
aimind_mysql:
image: mysql
container_name: aimind_mysql
volumes:
- "/root/aimind/mysql/data:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: "test12345"
ports:
- "3306:3306"
aimind_redis:
image: redis
container_name: aimind_redis
command: redis-server --requirepass vagiahgi$$af
restart: always
environment:
MYSQL_ROOT_PASSWORD: "test"
ports:
- "6379:6379"
aimind_es_single:
image: elasticsearch:5.6
container_name: aimind_es_single
ports:
- "9300:9300"
- "9200:9200"
restart: always
environment:
- "discovery.type=single-node"
aimind_backend:
depends_on:
- aimind_es_single
- aimind_mongodb
image: registry.iflyresearch.com/aimind/aimind-backend:devlatest
command: java -jar /app.jar --spring.profiles.active=swagger,single
container_name: aimind_backend
environment:
- "SPRING_PROFILES_ACTIVE=swagger,single"
volumes:
- "/root/aimind/storage:/root/aimind/storage"
- "/var/run/docker.sock:/var/run/docker.sock"
- "/root/aimind/docker/docker:/bin/docker"
- "/root/aimind/aimind/application-single.yml:/home/aimind/application-single.yml"
- "/mnt/cephfs/aimind/:/mnt/cephfs/aimind/"
links:
- aimind_es_single
- aimind_mongodb
extra_hosts:
- "aimind-single:127.0.0.1"
- "aimind_es:127.0.0.1"
ports:
- "18080:8080"
restart: always
aimind_web:
depends_on:
- aimind_backend
image: registry.iflyresearch.com/aimind/aimind:devlatest
container_name: aimind_web
volumes:
- "/root/aimind/aimind/web/nginx.conf:/etc/nginx/nginx.conf"
links:
- aimind_backend
ports:
- "18000:80"
restart: always
2. 操作
(1) es提供通過請求的方式更改指定index的_settings信息,因此可通過如下命令對索引aimind_prod_storage設置默認最大返回數量
curl -XPUT localhost:9200/aimind_prod_storage/_settings -d '{"index.max_result_window":"100000"}'
(2) 查詢設置后
curl -XGET localhost:9200/aimind_prod_storage/_settings
(3) 為了避免docker-compose down/up重啟,導致es的數據丟失,因此可以將es的數據文件保存在宿主機上,通過掛載的方式進行,具體配置如下:

aimind_es_single:
image: elasticsearch:5.6
container_name: aimind_es_single
ports:
- "9300:9300"
- "9200:9200"
restart: always
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- ./data:/usr/share/elasticsearch/data
environment:
- "discovery.type=single-node"