Как подключиться к локальному кластеру ES с помощью Spring Data Elasticsearch?

Я только начал изучать Elasticsearch и Spring Data Elasticsearch с демонстрационным проектом, и я смог приступить к работе.

Установил Elasticsearch на Mac с помощью brew install elasticsearch и запустил с помощью brew service start elasticsearch.

Для проекта,

@Configuration
@EnableElasticsearchRepositories(basePackages = "com.shubham.entities")
@ComponentScan(basePackages = "com.shubham")
public class DataConfig {

private static Logger logger = LoggerFactory.getLogger(DataConfig.class);

@Value("${elasticsearch.home}")
private String elasticsearchHome;

@Bean
public NodeBuilder nodeBuilder() {
    return new NodeBuilder();
}

@Bean
public ElasticsearchOperations elasticsearchTemplate() {
    try {
        final File tmpDir = File.createTempFile("elasticsearch_data", Long.toString(System.nanoTime()));
        final Settings.Builder elasticsearchSettings =
                Settings.settingsBuilder().put("http.enabled", "true")
                        .put("index.number_of_shards", "1")
                        .put("path.data", new File(tmpDir, "data").getAbsolutePath()) // 2
                        .put("path.logs", new File(tmpDir, "logs").getAbsolutePath()) // 2
                        .put("path.work", new File(tmpDir, "work").getAbsolutePath());

        return new ElasticsearchTemplate(nodeBuilder()
                .local(true)
                .settings(elasticsearchSettings.build())
                .node()
                .client());

        // @formatter:on
    } catch (final IOException ioex) {
        logger.error("Cannot create temp dir", ioex);
        throw new RuntimeException();
    }
}
}

elasticsearchHome в приведенном выше файле конфигурации на самом деле пуст, интересно, почему это все еще работает. В файле application.properties

spring.data.elasticsearch.cluster-name=shubham_lookup_cs_default
spring.data.elasticsearch.repositories.enabled=true

Я могу выполнять CRUD и другие операции с БД через Spring Data JPA и также протестировал его, работает хорошо.

Мой вопрос в том, как я могу запросить его через командную строку?

Когда я использую curl 'http://localhost:9200/?pretty', я возвращаюсь:

{
  "name" : "4IVQcts",
  "cluster_name" : "elasticsearch_shubham",
  "cluster_uuid" : "WxCAzE51TfS7P4eFYJpvCA",
  "version" : {
    "number" : "5.3.0",
    "build_hash" : "3adb13b",
    "build_date" : "2017-03-23T03:31:50.652Z",
    "build_snapshot" : false,
    "lucene_version" : "6.4.1"
  },
  "tagline" : "You Know, for Search"
}

Ясно, что не ожидаемый, поскольку cluster_name - это elasticsearch_shubham, что, я думаю, по умолчанию.

Я думаю, что мне здесь не хватает чего-то очень простого. На моей машине сейчас существует 2 разных кластера.

Для получения дополнительной информации о том, как я знаю, что проект elasticsearch работает, я создал несколько объектов и сохранил их, запросил с помощью контроллеров, работает.

Итак, у меня есть следующие вопросы:

  1. Как мне подключиться через кластер, созданный Spring Data Elasticsearch, через командную строку, используя CURL?
  2. Есть ли какой-либо пользовательский интерфейс, через который я могу видеть все данные в elasticsearch, возможно, используя Kibana?
  3. Действительно ли Spring Data Elasticsearch использует кластер по умолчанию вместо имени кластера, которое я упомянул в файле application.properties?

person Shubham A.    schedule 17.04.2017    source источник


Ответы (1)


Ясно, что это не то, что ожидалось, поскольку имя_кластера — это elasticsearch_shubham, что, я думаю, по умолчанию.

На самом деле, если вы хотите, чтобы ваш кластер назывался 'shubham_lookup_cs_default', вам нужно обновить ES_HOME/config/elasticsearch.yml.

cluster.name: my_cluster

Значение по умолчанию для имени кластера — elasticsearch. Если вам нужно два кластера, то я не уверен, что мы сможем создать два. Проверьте этот ответ ссылка.

Как мне подключиться через кластер, созданный Spring Data Elasticsearch, через командную строку, используя CURL?

Я не уверен, если пружинный поиск эластичных данных создаст кластер. Эластичность данных Spring будет просто указывать на существующий кластер. Если вы хотите запустить кластер, просто сделайте: -

cd elasticsearch-5.3.0/bin/
./elasticsearch

Есть ли какой-либо пользовательский интерфейс, через который я могу видеть все данные в elasticsearch, возможно, используя Kibana?

Да, Kibana предназначена для аналитики в реальном времени. Он покажет все данные на вкладке «Обнаружение». Просто нажмите «Обнаружить»: —

введите здесь описание изображения

Действительно ли Spring Data Elasticsearch использует кластер по умолчанию вместо имени кластера, которое я упомянул в файле application.properties?

Возможно, 'shubham_lookup_cs_default' отсутствует в ES_HOME/config/elasticsearch.yml. Проверьте, если нет, чем обновление, тогда оно наверняка укажет на «shubham_lookup_cs_default»

person Vijay    schedule 18.04.2017
comment
Что касается последней точки, я проверил elasticsearch.yml и указал на тот же путь, что и spring.data.elasticsearch.properties.path.data в моем проекте Spring. Но теперь я не могу запустить Elasticsearch через CLI, но проект работает нормально. Исключение IllegalStateException: failed to obtain node locks, tried [[<path>]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing. Ясно, что блокировка сохраняется. Как я могу поддерживать одни и те же данные в проекте CLI и Spring Data? - person Shubham A.; 25.04.2017