ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ElasticSearch知识点总结

ElasticSearch知识点总结 倒排索引当用户输入查询内容利用分词器对用户输入的内容分词然后取倒排索引库中匹配拿到文档id然后根据文档id查询文档内容Elasticsearch 默认会返回文档的_source字段原始 JSON 内容返回给用户。1.什么是elasticSearch?*- elasticsearch是一个开源的分布式搜索引擎可以用来实现搜索日志统计分析系统分析等功能**2.什么是elastic stack(ELK)**- 是以elasticsearch为核心的技术栈包括beats,Logstash,kibana,elasticsearch**3.什么是Lucene**- 是Apache的开源搜索引擎类库提供了搜索引擎的核心APIDay2一.索引库操作text是可拆分的keyword是不可拆分的analyzer跟text配合使用应为只有text需要分词操作properties只有在对象嵌套的情况下可以用到创建索引库索引库的操作注索引库和mapping一旦创建无法修改但是可以添加新的字段DSL查询语法-match查询全文检索查询会对用户输入的内容分词常用于搜索框搜索示例总结match和multi_mathc的区别是什么match:根据一个字段查询multi_match:根据多个字段查询参与查询字段越多查询性能越差精确查询精确查询一般是根据id数值keyword类型或者布尔字段来查询总结地理查询根据经纬度查询举例复合查询复合查询可以将其他简单查询组合起来实现更复杂的搜索逻辑相关性算分使用match查询时文档结果会根据与搜索词条的关联度打分返回结果时按照分值降序排列。总结function score query:使用这个可以修改文档的相关性算分(query score)根据新得到的算分排序总结搜索结果管理-排序搜索结果管理-分页搜索结果处理-高亮数据聚合聚合的分类注意进行聚合操作的的字段不需要做分词所以改字段不额能使用text类型总结DSL实现Bucket聚合DSL实现Metrics聚合RestClient实现聚合二数据同步数据同步的问题分析elasticsearch中的酒店数据来自于mysql数据库因此mysql数据发生改变时elasticsearch也必须跟着改变这个就是elasticsearch与mysql之间的数据同步。数据同步的三种方案方案一同步调用方案二使用MQ异步通知方案三监听binglog总结 在项目中使用MQ 在java中使用RabbitMQ的步骤_银行java项目怎么用到mq-CSDN博客在 RabbitMQ 中Exchange交换机、Queue队列 和 RoutingKey路由键 是消息传递的核心组件它们共同协作决定消息如何从生产者传递到消费者。以下是它们的详细解释和相互关系1. Exchange交换机作用Exchange 是消息的“分发中心”负责接收生产者发送的消息并根据规则绑定关系和路由键将消息路由到一个或多个队列。关键特性生产者从不直接发送消息到队列而是发送到 Exchange。Exchange 的类型决定消息的路由逻辑如精确匹配、模糊匹配、广播等。常见类型类型行为典型场景Direct精确匹配RoutingKey完全一致时路由到队列。订单处理如order.paymentFanout广播模式忽略RoutingKey消息发送到所有绑定的队列。系统通知全员广播Topic模糊匹配RoutingKey支持通配符*和#。日志分级如error.*Headers不依赖RoutingKey通过消息头Headers的键值对匹配。复杂条件路由较少使用示例// 声明一个Direct类型的Exchange Bean public DirectExchange orderExchange() { return new DirectExchange(order.exchange); }2. Queue队列作用Queue 是消息的“存储容器”用于暂存消息等待消费者处理。关键特性消息只有进入队列后才能被消费者消费。队列必须绑定到至少一个 Exchange才能接收消息。队列是独立的不同队列之间不会共享消息。重要属性属性说明Durable持久化队列重启后保留。Exclusive排他队列仅限当前连接使用连接关闭后队列删除。Auto-delete无消费者时自动删除队列。Dead Letter绑定死信交换机处理失败消息。示例// 声明一个持久化队列 Bean public Queue orderQueue() { return QueueBuilder.durable(order.queue).build(); }3. RoutingKey路由键作用RoutingKey 是消息的“路由标签”由生产者指定Exchange 根据它和绑定规则决定消息应发送到哪些队列。关键特性在Direct和Topic类型中RoutingKey 是路由的核心依据。在Fanout类型中RoutingKey 会被忽略。通配符规则仅Topic类型支持*匹配一个单词如order.*匹配order.payment。#匹配零或多个单词如order.#匹配order.payment.success。示例// 生产者发送消息时指定RoutingKey rabbitTemplate.convertAndSend(order.exchange, order.payment, message); // Exchange名称 ↑ RoutingKey ↑三者的协作流程生产者发送消息到 Exchange并携带RoutingKey。Exchange根据自身类型和绑定规则将消息路由到匹配的队列。绑定规则队列需通过BindingKey绑定到 Exchange与RoutingKey匹配。队列存储消息等待消费者拉取。图示具体场景示例场景1订单支付Direct ExchangeExchangeorder.exchange类型DirectQueuepayment.queue绑定键order.payment生产者代码// 发送支付消息RoutingKey必须完全匹配order.payment rabbitTemplate.convertAndSend(order.exchange, order.payment, paymentMessage);结果消息仅进入payment.queue。场景2日志收集Topic ExchangeExchangelogs.exchange类型TopicQueueerror.queue绑定键*.error生产者代码// 发送错误日志RoutingKey匹配*.error rabbitTemplate.convertAndSend(logs.exchange, payment.error, errorLog);结果消息进入error.queue。常见问题解答Q1: Exchange 和 Queue 是多对多关系吗是的一个 Exchange 可以绑定多个 Queue一个 Queue 也可以绑定到多个 Exchange。Q2: RoutingKey 和 BindingKey 的区别RoutingKey生产者发送消息时指定的键。BindingKey队列绑定到 Exchange 时指定的键用于匹配 RoutingKey。在 Direct 和 Topic 中两者需匹配在 Fanout 中两者均被忽略。Q3: 如何实现消息的延迟投递通过 RabbitMQ 插件x-delayed-message或结合死信队列DLX实现。总结组件角色关键点Exchange消息路由的“决策者”类型Direct/Fanout/Topic决定路由逻辑。Queue消息的“存储点”消费者从队列获取消息需绑定到 Exchange。RoutingKey消息的“路由标签”在 Direct/Topic 中用于匹配绑定规则Fanout 中忽略。设计建议优先使用Topic实现灵活路由用Direct确保精确投递。生产环境务必配置队列持久化和消息确认机制。ES集群结构单机的elasticsearch做数据存储必然面临两个问题海量的数据问题单点故障问题。】、海量数据存储问题将索引库从逻辑上拆分为N个分片(shard)存储到多个节点单点故障问题将分片数据在不同节点备份ES集群的节点角色elasticsearch中集群节点有不同的职责划分:总结分布式新增和查询流程ES集群-故障转移
返回列表