Elasticsearch 配置用户名和密码

启动 Elasticsearch 程序

[elastic@console bin]$ ./elasticsearch -d
    future versions of Elasticsearch will require Java 11; your Java version from [/usr/java/jdk1.8.0_181/jre] does not meet this requirement

创建密码

[elastic@console bin]$ ./elasticsearch-setup-passwords interactive
future versions of Elasticsearch will require Java 11; your Java version from [/usr/java/jdk1.8.0_181/jre] does not meet this requirement

Unexpected response code [500] from calling GET http://192.168.108.126:9200/_security/_authenticate?pretty
It doesn't look like the X-Pack security feature is enabled on this Elasticsearch node.
Please check if you have enabled X-Pack security in your elasticsearch.yml configuration file.

ERROR: X-Pack Security is disabled by configuration.

需要设置 X-Pack

[elastic@console bin]$ vim ../config/elasticsearch.yml
	http.cors.enabled: true
	http.cors.allow-origin: "*"
	http.cors.allow-headers: Authorization
	xpack.security.enabled: true
	xpack.security.transport.ssl.enabled: true

添加密码

[elastic@console bin]$ ./elasticsearch-setup-passwords interactive
future versions of Elasticsearch will require Java 11; your Java version from [/usr/java/jdk1.8.0_181/jre] does not meet this requirement
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y


Enter password for [elastic]:
Reenter password for [elastic]:
Passwords do not match.
Try again.
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

修改kibana

[root@console bin]# vim ../config/kibana.yml
	elasticsearch.username: "elastic"
	elasticsearch.password: "passwd"

修改密码

POST /_security/user/elastic/_password
{
  "password": "123456"
}

修改密码之后,需要重新设置kibana的配置文件,才可以重新使用kibana

java 连接认证

package elasticSearch.highLevelClient;

import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.XPackClient;

import java.io.IOException;

/**
 * @author [tu.tengfei]
 * @description
 * @date 2019/8/10
 */
public class ESHighClient {
    public static RestHighLevelClient client;
    public static void getESClient(){

//        client = new RestHighLevelClient(RestClient.builder(
//                new HttpHost("slave01", 9200, "http"),
//                new HttpHost("master01", 9200, "http")
//        ));

        //需要用户名和密码的认证
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "passwd"));
        RestClientBuilder restClientBuilder = RestClient.builder(new HttpHost("192.168.108.126", 9200, "http"))
                .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                    @Override
                    public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {
                        return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                    }
                });
        client = new RestHighLevelClient(restClientBuilder);
    }

    public static void clientClose(){
        if (client!=null){
            try {
                client.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

### Elasticsearch 默认用户名密码 Elasticsearch 在默认情况下并没有预设的用户名密码[^2]。只有在安全功能被启用后,例如通过配置 `xpack.security` 或者使用 `elasticsearch-setup-passwords` 工具时,才会要求设置内置用户密码[^5]。 内置用户Elasticsearch 提供的一组预定义角色,用于管理集群的不同方面。这些用户包括但不限于: - **elastic**:超级用户,具有对整个集群的完全访问权限。 - **kibana**:Kibana 系统用户,用于与 Elasticsearch 进行通信。 - **logstash_system**:Logstash 系统用户,用于将数据发送到 Elasticsearch- **apm_system**:APM 系统用户,用于与 APM 服务器进行通信。 如果尚未设置密码,可以通过以下命令为内置用户设置密码: ```bash ./bin/elasticsearch-setup-passwords interactive ``` 此命令会提示为上述内置用户逐一设置密码[^1]。如果需要查看当前密码状态,可以检查 `_security/user` API 的响应信息: ```bash GET /_security/user/_stats ``` 此外,Elasticsearch 不允许以 root 用户身份运行,否则会抛出错误 `can not run elasticsearch as root`[^2]。因此,请确保使用非特权用户(如 `elasticsearch`)来启动服务。 ### 数据同步与查询优化 在实际应用中,Elasticsearch 的数据通常来源于其他数据库(如 MySQL)。当 MySQL 数据发生变化时,必须通过某种机制同步到 Elasticsearch 中[^3]。这种同步可以通过 Logstash、Beat 或自定义脚本来实现。 关于查询优化,如果需要匹配所有关键词,可以使用 `match` 查询,并设置 `operator` 参数为 `and`,如下所示[^4]: ```json GET article/_search { "query": { "match": { "title": { "query": "Elasticsearch 查询优化", "operator": "and" } } } } ``` 对于短语精确匹配,则可以使用 `match_phrase` 查询。 ---
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值