docker创建elasticsearch、elasticsearch-head部署及简单操作

elasticsearch部署

1 拉取elasticsearch镜像

docker pull elasticsearch:7.7.0

2 创建文件映射路径

mkdir /mydata/elasticsearch/data

mkdir /mydata/elasticsearch/plugins

mkdir /mydata/elasticsearch/config

3 文件夹授权

chmod 777 /mydata/elasticsearch/data

4 修改配置文件

cd /mydata/elasticsearch/config

vi elasticsearch.yml

填入如下内容:

#集群名称

cluster.name: "elasticsearch"

network.host: 0.0.0.0

#跨域设置

http.cors.enabled: true

http.cors.allow-origin: "*"

#http端口

http.port: 9200

#java端口

transport.tcp.port: 9300

5 运行镜像:

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -d -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \

-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \

-v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:7.7.0

6 访问页面:

http://192.168.56.102:9200 查看是否部署成功

如出现如上内容,表示elasticsearch部署成功,就可以进行搜索操作了

elasticsearch-head部署

为了更好的使用elasticsearch,需要部署elasticsearch-head插件

1 #拉取镜像

docker pull mobz/elasticsearch-head:5

2 启动容器

docker run -d --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5

3 访问elasticsearch-head页面内容

elasticsearch-head的页面操作

1 查询所有数据

出现如上所示报错。解决方案如下:

1 docker exec -it {elasticearch-head}容器名称 /bin/bash

2 修改elasticsearch-head的js文件

vi /usr/src/app/_site/vendor.js

a 第6886行 :/contentType: "application/x-www-form-urlencoded

改为 :contentType: "application/json;charset=UTF-8"

b 第7574行 var inspectData = s.contentType === "application/x-www-form-urlencoded" &&

改为 var inspectData = s.contentType === "application/json;charset=UTF-8" &&

3 重启elasticsearch-head容器

其他页面操作参见博客:

ElasticSearch-Head操作Elasticsearch进行查询数据(查询所有数据,查询单个索引所有数据,查询单个索引指定类型所有数据,根据指定条件查询数据)_elasticsearch-head 查询-CSDN博客

使用java操作elasticsearch

1 引入依赖:

java 复制代码
<dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.7.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.elasticsearch</groupId>
                    <artifactId>elasticsearch</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.7.0</version>
        </dependency>

2 相关crud操作

java 复制代码
public class EsHandler {

    private static final String ES_SERVER_ADDRESS = "192.168.56.102";
    private static final String IDX_NAME = "employee";

    private static RestHighLevelClient CLIENT = null;

    public static void main(String[] args) throws IOException {
        // 初始化
        init();

        // 创建索引数据
        createIndex();
        // 修改数据
//        updateDoc();
        // 删除数据
//        deleteDoc();
        // 查询数据
//        searchDoc();

        // 关闭连接
        close();

    }

    private static void init() {
        CLIENT = new RestHighLevelClient(RestClient.builder(
                new HttpHost(ES_SERVER_ADDRESS,9200,"http")));

    }

    private static void close() throws IOException {
        CLIENT.close();
    }

    private static void createIndex() throws IOException {
        IndexRequest indexRequest = new IndexRequest(IDX_NAME);

        Map<String, String> insertInfo = new HashMap<>();
        insertInfo.put("name","wangwu");

        indexRequest.source(insertInfo);

        IndexResponse response = CLIENT.index(indexRequest, RequestOptions.DEFAULT);

        System.out.println("ID:" + response.getId() + "/t" + "RESULT:" + response.getResult());

    }

    private static void updateDoc() throws IOException {
        UpdateRequest updateRequest = new UpdateRequest(IDX_NAME,"8");

        // 注意此处的泛型类型:<String,Object>,如果是其他的泛型类型,es的api会认为是另一套api调用
        Map<String, Object> sourceInfo = new HashMap<>();
        sourceInfo.put("name","骡子摊");

//        updateRequest.doc("name","隆昌羊肉汤");

        updateRequest.doc(sourceInfo);

        updateRequest.timeout("1s");
        updateRequest.retryOnConflict(3);

        UpdateResponse response = CLIENT.update(updateRequest, RequestOptions.DEFAULT);

        System.out.println("ID:" + response.getId() + "/t" + "RESULT:" + response.getResult());
    }

    private static void deleteDoc() throws IOException {
        DeleteRequest deleteRequest = new DeleteRequest(IDX_NAME,"9");

        DeleteResponse response = CLIENT.delete(deleteRequest, RequestOptions.DEFAULT);

        System.out.println("ID:" + response.getId() + "/t" + "RESULT:" + response.getResult());
    }

    /**
     *
     * @throws IOException
     */
    private static void searchDoc() throws IOException {

        SearchSourceBuilder builder = new SearchSourceBuilder()
                .query(QueryBuilders.matchQuery("message", "execute"));

        SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices("rizhi-log-*");
        searchRequest.source(builder);
        // 执行请求
        SearchResponse response = CLIENT.search(searchRequest, RequestOptions.DEFAULT);
        // 解析查询结果
        System.out.println(response.toString());
    }
相关推荐
eddy-原8 小时前
全链路 DevOps 实战:基于 Jenkins、GitLab、Prometheus 与 SonarQube 的持续集成、部署、监控与优化
运维·jenkins
是毛毛吧8 小时前
开发环境配置指南:解决 GitHub 连接超时与依赖下载失败的问题
网络·git·网络安全·docker·信息与通信
_默_8 小时前
前端常用依赖归纳【vueuse\lodash-es\dayjs\bignumber】
大数据·前端·elasticsearch
weixin_307779138 小时前
Jenkins Folders插件详解:组织、管理与最佳实践
运维·开发语言·自动化·jenkins
raoxiaoya8 小时前
golang调用 elasticsearch 8,向量检索
开发语言·elasticsearch·golang
morliz子轩8 小时前
在Docker上安装MYSQL 8.x—RelationalDb with SQL
sql·mysql·docker
huahailing10248 小时前
docker 部署 rustfs
运维·docker·容器
Elasticsearch8 小时前
亲爱的圣诞老人,这里有一点小小的帮助,献给圣诞节
elasticsearch
weixin_307779139 小时前
Jenkins声明式管道扩展点API:深度解析与应用指南
开发语言·ci/cd·自动化·jenkins·etl
sg_knight9 小时前
Docker Engine 升级指南:保障容器安全的关键步骤
java·spring boot·安全·spring·spring cloud·docker·容器