Docker +asticsearch всегда возвращает «в вашем кластере нет живых узлов», когда я пытаюсь создать индекс - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь настроить docker для уже существующего laravel проекта. Как вы, ребята, знаете, Laravel Scout предоставляет простое решение на основе драйверов для добавления полнотекстового поиска в наши модели Eloquent, я использую его в своем собственном проекте. Я использую Laradock и устанавливаю Elassearch в качестве драйвера для разведчика. Однако, когда я пытаюсь создать индекс php artisan elastic:create-index App\\MyIndexConfigurator (или даже команду импорта scout), у него появляется эта ошибка No alive nodes found in your cluster.

Странно то, что если я попал на http://localhost:9200/_cluster/health, он выглядит хорошо:

`{
  cluster_name: "laradock-cluster",
  status: "green",
  timed_out: false,
  number_of_nodes: 1,
  number_of_data_nodes: 1,
  active_primary_shards: 0,
  active_shards: 0,
  relocating_shards: 0,
  initializing_shards: 0,
  unassigned_shards: 0,
  delayed_unassigned_shards: 0,
  number_of_pending_tasks: 0,
  number_of_in_flight_fetch: 0,
  task_max_waiting_in_queue_millis: 0,
  active_shards_percent_as_number: 100
}`

Это мой scout_elasti c config:

return [
    'client' => [
        'hosts' => [
            env('SCOUT_ELASTIC_HOST', 'localhost:9200'),
        ],
    ],
    'update_mapping' => env('SCOUT_ELASTIC_UPDATE_MAPPING', true),
    'indexer' => env('SCOUT_ELASTIC_INDEXER', 'single'),
    'document_refresh' => env('SCOUT_ELASTIC_DOCUMENT_REFRESH'),
];

и вот мой docker -compose.yml:

### ElasticSearch ########################################
    elasticsearch:
      build: ./elasticsearch
      volumes:
        - elasticsearch:/usr/share/elasticsearch/data
      environment:
        - cluster.name=laradock-cluster
        - node.name=laradock-node
        - bootstrap.memory_lock=true
        - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
        - cluster.initial_master_nodes=laradock-node
      ulimits:
        memlock:
          soft: -1
          hard: -1
      ports:
        - "${ELASTICSEARCH_HOST_HTTP_PORT}:9200"
        - "${ELASTICSEARCH_HOST_TRANSPORT_PORT}:9300"
      depends_on:
        - php-fpm
      networks:
        - frontend

- backend

Редактировать:

curl -XGET http://elasticsearch:9200/_cluster/health:

{
"cluster_name":"laradock-cluster","status":"green",
"timed_out":false,
"number_of_nodes":1,
"number_of_data_nodes":1,
"active_primary_shards":0,
"active_shards":0,
"relocating_shards":0,
"initializing_shards":0,
"unassigned_shards":0,
"delayed_unassigned_shards":0,
"number_of_pending_tasks":0,
"number_of_in_flight_fetch":0,
"task_max_waiting_in_queue_millis":0,
"active_shards_percent_as_number":100.0
}

.env:

APP_NAME=Laravel
APP_ENV=local
APP_DEBUG=true
APP_URL=http://127.0.0.1

SCOUT_DRIVER=elastic
SCOUT_ELASTIC_HOST=elasticsearch:9200

1 Ответ

0 голосов
/ 11 февраля 2020

Вам нужно изменить SCOUT_ELASTIC_HOST

Это должно быть SCOUT_ELASTIC_HOST=http://elasticsearch:9200 Не http://localhost:9200

...