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__

本文链接:https://www.cnblogs.com/databank/p/17463325.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了