ElasticSearch(2)使用篇

一、创建对象映射 ①创建ElasticSearch中对象 不参与索引的可以加上 "index": false, "doc_values": false PUT article { "mappings": { "properties": { "id":{ "type": "long", "index": false, "doc_values": false }, "title":{ "type": "text", "analyzer": "ik_smart" }, "createTime":{ "type": "date", "format": "yyyy-MM-dd HH:mm:ss" }, "images":{ "type": "keyword", "index": false, "doc_values": false } } } } ②java对象映射 注意LocalDateTime的处理。 @Data public class ArticleEsModel { /** * id */ private Long id; /** * 标题 */ private String title; /** * 时间 */ @Field(type = FieldType.Date,format = DateFormat.basic_date_time_no_millis,pattern = "yyyy-MM-dd HH:mm:ss") @JsonSerialize(using = LocalDateTimeSerializer.class) @JsonDeserialize(using = LocalDateTimeDeserializer.class) @JsonFormat(shape = JsonFormat.Shape.STRING,timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; /** * 图片 */ private List<String> images; } 二、批量插入 import co.elastic.clients.elasticsearch.ElasticsearchClient; import co.elastic.clients.elasticsearch.core.BulkRequest; import co.elastic.clients.elasticsearch.core.BulkResponse; import co.elastic.clients.elasticsearch.core.bulk.BulkResponseItem; import com.vanky.community.api.search.to.ArticleEsModel; import com.vanky.community.search.constant.EsContent; import com.vanky.community.search.service.ArticleSearchService; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.io.IOException; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** * @author vanky */ @Slf4j @Service public class ArticleSearchServiceImpl implements ArticleSearchService { @Resource private ElasticsearchClient elasticsearchClient; @Override public boolean saveArticleBatch(List<ArticleEsModel> articleEsModels) throws IOException { BulkRequest.Builder br = new BulkRequest.Builder(); for (ArticleEsModel model : articleEsModels) { br.operations(op -> op .index(idx -> idx .index(EsContent.ARTICLE_INDEX) .id(model.getId().toString()) .document(model) ) ); } //执行操作,并返回响应结果 BulkResponse bulkResponse = elasticsearchClient.bulk(br.build()); //处理错误 if(bulkResponse.errors()){ List<String> collect = Arrays.stream(bulkResponse.items().toArray(new BulkResponseItem[0])) .map(item -> item.id()) .collect(Collectors.toList()); log.error("文章保存到es出错:{}", collect); return false; } return true; } } 三、查询 ElasticSearch —- DSL查询语句 ...

七月 14, 2024 · 3 分钟

ElasticSearch(1)安装与基础篇

一、安装es ①拉取镜像 ②启动 docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" \ -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \ -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -d elasticsearch:8.11.3 ③编写 elasticsearch.yml cluster.name: "docker-cluster" network.host: 0.0.0.0 xpack.security.enabled: false cluster.name: "docker-cluster" 这个配置参数定义了Elasticsearch集群的名称。在分布式环境下,所有希望加入同一集群的节点都必须配置相同的集群名称。这里将集群命名为 “docker-cluster”,意味着所有带有这个配置的Elasticsearch节点将会组成一个名为“docker-cluster”的集群。 network.host: 0.0.0.0 此配置指定了Elasticsearch节点监听请求的网络接口地址。设置为 “0.0.0.0” 表示节点将在所有可用网络接口上监听请求,这意味着该节点将对来自任何IP地址的客户端请求做出响应。这对于Docker容器环境尤其常见,因为它允许从宿主机或其他容器内部访问此Elasticsearch服务。 xpack.security.enabled: false X-Pack是Elasticsearch提供的一个安全、监控、警报和图形化界面等扩展功能集合。xpack.security.enabled 参数控制X-Pack安全模块是否启用。当设置为 false 时,表示Elasticsearch节点启动时不启用任何安全认证和授权机制。这样做的结果是Elasticsearch服务将以无安全验证的方式运行,这在开发或测试环境中可能比较方便,但在生产环境中强烈建议启用并正确配置安全性以保护数据和系统不受未经授权的访问。 二、安装kibana ①拉取镜像 ②启动 docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.200.134:9200 -p 5601:5601 \ -d kibana:8.11.3 三、使用elasticsearch index 相当于数据库,type 相当于表 Elasticsearch 是一个分布式、开源的搜索和分析引擎,主要用于全文搜索、日志数据分析、实时数据分析等应用。它是由 Elasticsearch N.V. 公司维护的开源项目,建立在 Apache Lucene 基础之上。以下是 Elasticsearch 的一些主要特性和用途: ...

七月 11, 2024 · 4 分钟