Elasticsearch — Reindex не получает документов с использованием официальной документации

#elasticsearch

Вопрос:

Я следую документации по переиндексации здесь: https://www.elastic.co/guide/en/cloud/current/ec-migrate-data.html

У меня есть два индекса Elasticsearch в localhost:

192.168.0.100:9200

 {
  "name" : "fses01",
  "cluster_name" : "fs-es-cluster",
  "cluster_uuid" : "DqVDBBafRaO9UAJPKuc_xQ",
  "version" : {
    "number" : "7.14.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "dd5a0a2acaa2045ff9624f3729fc8a6f40835aa1",
    "build_date" : "2021-07-29T20:49:32.864135063Z",
    "build_snapshot" : false,
    "lucene_version" : "8.9.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
 

Со следующим индексом:

 health status index             uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   formshare_records NpEFzsGvTEmivnYjJhwHJg   5   1      51343            0      7.8mb          3.9mb
 

192.168.0.100:9201

 {
  "name" : "es01",
  "cluster_name" : "es-docker-cluster",
  "cluster_uuid" : "bvsRXLwZRtKuWIrIuKx0hg",
  "version" : {
    "number" : "7.14.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "6bc13727ce758c0e943c3c21653b3da82f627f75",
    "build_date" : "2021-09-15T10:18:09.722761972Z",
    "build_snapshot" : false,
    "lucene_version" : "8.9.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
 

С тем же индексом, но пустым:

 health status index             uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   formshare_records uxvizIAIS82YBHSsvpq4-Q   5   1          0            0        2kb            1kb
 

Я выполняю переиндексацию с использованием CULR со следующим:

 curl -X POST "192.168.0.100:9201/_reindex" -H 'Content-Type: application/json' -d'
{
  "source": {
    "remote": {
      "host": "http://192.168.0.100:9200"      
    },
    "index": "formshare_records",
    "query": {
      "match_all": {}
    }
  },
  "dest": {
    "index": "formshare_records"
  }
}
'
 

But I get zero transfer:

 {"took":34,"timed_out":false,"total":0,"updated":0,"created":0,"deleted":0,"batches":0,"version_conflicts":0,"noops":0,"retries":{"bulk":0,"search":0},"throttled_millis":0,"requests_per_second":-1.0,"throttled_until_millis":0,"failures":[]}
 

The index definition is the same on both sides:

 {"settings": {
            "index": {
                "number_of_shards": 5,
                "number_of_replicas": 1
            }
        },
        "mappings": {
            "properties": {
                "project_id": {"type": "keyword"},
                "form_id": {"type": "keyword"},
                "schema": {"type": "keyword"},
                "table": {"type": "keyword"}
            }
        }}
 

Both of them are under docker:
192.168.0.100:9200

 version: '3'
services:
  fses01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
    container_name: fses01
    environment:
      - node.name=fses01
      - cluster.name=fs-es-cluster
      - discovery.seed_hosts=fses02
      - cluster.initial_master_nodes=fses01,fses02
      - bootstrap.memory_lock=true
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms2048m -Xmx2048m"
      - cluster.max_shards_per_node=20000
      - script.max_compilations_rate=10000/1m
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /opt/elasticsearch-docker/data:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - esnet
  fses02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0
    container_name: fses02
    environment:
      - node.name=fses02
      - cluster.name=fs-es-cluster
      - discovery.seed_hosts=fses01
      - cluster.initial_master_nodes=fses01,fses02
      - bootstrap.memory_lock=true
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms2048m -Xmx2048m"
      - cluster.max_shards_per_node=20000
      - script.max_compilations_rate=10000/1m   
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /opt/elasticsearch-docker/data2:/usr/share/elasticsearch/data
    networks:
      - esnet
  kib01:
    image: docker.elastic.co/kibana/kibana:7.14.0
    container_name: kib01
    ports:
      - 5601:5601
    environment:
      ELASTICSEARCH_URL: http://fses01:9200
      ELASTICSEARCH_HOSTS: '["http://fses01:9200","http://fses02:9200"]'
    networks:
        - esnet
networks:
  esnet:
 

192.168.0.100:9201

 version: '3.7'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14.2
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - reindex.remote.whitelist=192.168.0.100:9200
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /opt/elasticsearch710/data:/usr/share/elasticsearch/data
    ports:
      - 9201:9200
    networks:
      - elastic
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14.2
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /opt/elasticsearch710/data2:/usr/share/elasticsearch/data
    networks:
      - elastic
  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.14.2
    container_name: es03
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /opt/elasticsearch710/data3:/usr/share/elasticsearch/data
    networks:
      - elastic
networks:
  elastic:
    driver: bridge
 

Контейнер 9201 может видеть индекс 9200:

 sudo docker exec -it es01 /bin/bash
[root@943159977b17 elasticsearch]# curl -X GET "192.168.0.100:9200/_cat/indices/formshare_records?vamp;s=indexamp;pretty"
health status index             uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   formshare_records NpEFzsGvTEmivnYjJhwHJg   5   1      51343            0      7.8mb          3.9mb
curl -X POST "192.168.0.100:9201/_reindex" -H 'Content-Type: application/json' -d'
{
  "source": {
    "remote": {
      "host": "http://192.168.0.100:9200"      
    },
    "index": "formshare_records",        
    "query": {
      "match_all": {}
    }
  },
  "dest": {
    "index": "formshare_records"
  }
}
'
{"took":18,"timed_out":false,"total":0,"updated":0,"created":0,"deleted":0,"batches":0,"version_conflicts":0,"noops":0,"retries":{"bulk":0,"search":0},"throttled_millis":0,"requests_per_second":-1.0,"throttled_until_millis":0,"failures":[]}
 

Есть идеи, почему reindex не работает? Я пробовал без запроса, но получаю то же самое!

Комментарии:

1. Привет, я добавил YML обоих серверов

2. ну, когда вы отправляете свой запрос в elasticsearch на порт 9201 со своего сервера и говорите, что удаленный сервер localhost: 9200, он видит этот localhost в своем собственном контейнере. Я имею в виду, что localhost: 9200 в вашем втором docker сам по себе. Вам нужно изменить сетевой режим на хост или поместить оба контейнера в одну сеть и указать имя службы вместо localhost в вашем запросе переиндексации.

3. Вместо localhost я изменил IP-адрес своего компьютера (192.168.0.100). Я вошел в контейнер docker под управлением 9201. И я сделал: [root@943159977b17 elasticsearch]# curl -X ПОЛУЧИТЬ «192.168.0.100:9200/_cat/indexes/formshare_records?v amp; s=index amp; pretty» индекс состояния работоспособности uuid при представлении документов.количество документов.удаленное хранилище.размер pri.store.size зеленый открыть formshare_records NpEFzsGvTEmivnYjJhwHJg 5 1 51343 0 7,8 мб 3,9 мб [root@943159977b17 elasticsearch]# Я вижу индекс 9200 с 51343 документами, но результат тот же.

4. Даже если я попробовал внутри контейнера 9201, сбой

5. ДА. Я обновил белый список 9201. См. Обновленный вопрос