docker安装elasticsearch与kibana

下载镜像:

docker pull elasticsearch:7.4.2

docker pull kibana:7.4.2

创建目录:

mkdir -p /data/elasticsearch/config

mkdir -p /data/elasticsearch/data

写入配置:

echo "http.host: 0.0.0.0" >> /data/elasticsearch/config/elasticsearch.yml

修改文件夹权限(否则启动后由于没有权限进程异常挂掉):

chmod -R 777 /data/elasticsearch/

指定配置参数并启动:

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2

运行kibana:

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://10.9.31.81:9200 -p 5601:5601 \
-d kibana:7.4.2

 

###############java demo####################

 pom

1
2
3
4
5
6
7
8
9
10
11
<!--引入elasticsearch-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<!--elasticsearch-->
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>${elasticsearch.version}</version>
</dependency>
application.properties
1
2
3
spring.elasticsearch.rest.uris=http://10.9.31.81:9200
spring.elasticsearch.rest.username=""
spring.elasticsearch.rest.password=""
ElasticSearchConfig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.example.demo.test.es.config;
 
import org.apache.http.HttpHost;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class ElasticSearchConfig {
    public static final RequestOptions COMMON_OPTIONS;
 
    static {
        RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
//        builder.addHeader("Authorization", "Bearer " + TOKEN);
//        builder.setHttpAsyncResponseConsumerFactory(
//                new HttpAsyncResponseConsumerFactory
//                        .HeapBufferedResponseConsumerFactory(30 * 1024 * 1024 * 1024)
//        );
        COMMON_OPTIONS = builder.build();
    }
 
    @Bean
    public RestHighLevelClient esRestClient() {
        return new RestHighLevelClient(
                RestClient.builder(new HttpHost("10.9.31.81", 9200, "http"))
        );
    }
}
jps Repository
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.example.demo.test.es.rep;
 
import com.example.demo.test.es.demo.Demo;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;
 
@Repository
public interface UserRepository extends ElasticsearchRepository<Demo.User, Long> {
 
    /**
     * 通过ID字段查询
     */
    Demo.User queryUserById(String id);
 
}

test demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package com.example.demo.test.es.demo;
 
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import com.example.demo.test.es.config.ElasticSearchConfig;
import com.example.demo.test.es.rep.UserRepository;
import lombok.Data;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import org.springframework.test.context.junit4.SpringRunner;
 
import java.io.IOException;
import java.util.Optional;
 
@SpringBootTest
@RunWith(SpringRunner.class)
public class Demo {
    @Autowired
    private RestHighLevelClient client;
    @Autowired
    private UserRepository userRepository;
    @Test
    public void indexData() throws IOException {
        IndexRequest indexRequest = new IndexRequest("users");
        String snowflakeNextIdStr = IdUtil.getSnowflakeNextIdStr();
        // 数据的id
        indexRequest.id(snowflakeNextIdStr);
        // set data type one
//        indexRequest.source("userName", "zhangsan", "age", 18, "gender", "男");
        // set data type two
        User user = new User();
        user.setUserName("zhangsan");
        user.setAge(18);
        user.setGender("男");
        String jsonString = JSON.toJSONString(user);
        // 要保存的内容
        indexRequest.source(jsonString, XContentType.JSON);
        // 执行操作
        IndexResponse index = client.index(indexRequest, ElasticSearchConfig.COMMON_OPTIONS);
        // 提取有用的响应数据
        System.out.println("提取有用的响应数据 : "+index);
 
        GetRequest getRequest = new GetRequest("users");
        getRequest.id(snowflakeNextIdStr);
        // 显示字段
        String[] includes = new String[]{"userName", "age", "gender"};
        // 排除字段
        String[] excludes = Strings.EMPTY_ARRAY;
        FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes);
        getRequest.fetchSourceContext(fetchSourceContext);
        GetResponse documentFields = client.get(getRequest, ElasticSearchConfig.COMMON_OPTIONS);
        // 提取有用的响应数据
        System.out.println("提取有用的响应数据 : "+documentFields);
    }
    @Test
    public void indexData2() {
        Long id = IdUtil.getSnowflakeNextId();
        User user = new User();
        user.setId(id);
        user.setUserName("zhangsan");
        user.setAge(19);
        user.setGender("男");
        userRepository.save(user);
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        Optional<User> byId = userRepository.findById(id);
        byId.ifPresent(value -> System.out.println("提取有用的响应数据" + value));
    }
 
    @Data
    @Document(indexName = "users",useServerConfiguration = true, createIndex = false)
    public static class User{
        @Id
        private Long id;
        /**
         * 分词器名称 ik_max_word
         */
        @Field(type = FieldType.Text, analyzer = "ik_max_word")
        private String userName;
        @Field(type = FieldType.Integer)
        private Integer age;
        @Field(type = FieldType.Text, analyzer = "ik_max_word")
        private String gender;
    }
}

  

  


__EOF__

本文作者东峰叵.com
本文链接https://www.cnblogs.com/databank/p/17463325.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   东峰叵,com  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示