摘要:
集群 单机的elasticsearch做数据存储,必然面临两个问题:海量数据存储问题、单点故障问题。 海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard),存储到多个节点 单点故障问题:将分片数据在不同节点备份(replica ) ES集群相关概念: 集群(cluster):一组拥有共同的 阅读全文
摘要:
数据同步 elasticsearch中的酒店数据来自于mysql数据库,因此mysql数据发生改变时,elasticsearch也必须跟着改变,这个就是elasticsearch与mysql之间的数据同步。 异步通知 流程如下: hotel-admin对mysql数据库数据完成增、删、改后,发送MQ 阅读全文
摘要:
根据用户输入的字母,提示完整词条的功能,就是自动补全。 索引库中就需要有词条对应的拼音数据,使用拼音分词将指定字段重新分词。 拼音分词器 要实现根据字母做补全,就必须对文档按照拼音分词。在GitHub上恰好有elasticsearch的拼音分词插件。地址:https://github.com/med 阅读全文
摘要:
API语法 聚合条件与query条件同级别,因此需要使用request.source()来指定聚合条件。 聚合的结果解析: @Override public Map<String, List<String>> filters(RequestParams params) { try { // 1.准备 阅读全文
摘要:
**聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近实时搜索效果。 聚合的种类 阅读全文
摘要:
match_all查询 代码解读: 第一步,创建SearchRequest对象,指定索引库名 第二步,利用request.source()构建DSL,DSL中可以包含查询、分页、排序、高亮等 query():代表查询条件,利用QueryBuilders.matchAllQuery()构建一个matc 阅读全文
摘要:
搜索的结果可以按照用户指定的方式去处理或展示。 排序 分页 搜索关键词高亮 排序 elasticsearch默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。 普通字段排序 keyword、数值 阅读全文
摘要:
1、DSL查询文档 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索 阅读全文
摘要:
RestClient操作文档 新增文档 将DB表中的数据同步到elasticsearch 1)查询数据库 1.1)数据库查询后的结果是一个Hotel类型的对象 1 @Data 2 @TableName("tb_hotel") 3 public class Hotel { 4 @TableId(typ 阅读全文
摘要:
RestAPI(组装DSL语句,通过Http请求发送给ES服务器) ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。官方文档地址:https://www.elastic.co/guide/en/elasticsearch/client 阅读全文