随笔分类 -  ES

摘要:聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近实时搜索效果。 聚合的种类 聚合常见 阅读全文
posted @ 2023-05-24 16:26 JustJavaIt 阅读(235) 评论(0) 推荐(1) 编辑
摘要:排序、分页 搜索结果的排序和分页是与query同级的参数,因此同样是使用request.source()来设置。 对应的API如下: 完整代码示例 1 @Test 2 void testSortAndPage() throws IOException { 3 int page = 2, size = 阅读全文
posted @ 2023-05-23 15:21 JustJavaIt 阅读(42) 评论(0) 推荐(0) 编辑
摘要:match查询 全文检索的match和multi_match查询与match_all的API基本一致。差别是查询条件,也就是query的部分。 因此,Java代码上的差异主要是request.source().query()中的参数了。同样是利用QueryBuilders提供的方法: 而结果解析代码 阅读全文
posted @ 2023-05-23 14:57 JustJavaIt 阅读(36) 评论(0) 推荐(0) 编辑
摘要:我们以match_all查询为例 发起查询请求 代码解读 第一步,创建SearchRequest对象,指定索引库名 第二步,利用request.source()构建DSL,DSL中可以包含查询、分页、排序、高亮等 query():代表查询条件,利用QueryBuilders.matchAllQuer 阅读全文
posted @ 2023-05-23 14:37 JustJavaIt 阅读(29) 评论(0) 推荐(0) 编辑
摘要:高亮原理 我们在百度,京东搜索时,关键字会变成红色,比较醒目,这叫高亮显示: 高亮显示的实现分为两步: 1)给文档中的所有关键字都添加一个标签,例如<em>标签 2)页面给<em>标签编写CSS样式 实现高亮 语法 注意 高亮是对关键字高亮,因此搜索条件必须带有关键字,而不能是范围这样的查询。 默认 阅读全文
posted @ 2023-05-23 11:42 JustJavaIt 阅读(110) 评论(0) 推荐(0) 编辑
摘要:elasticsearch 默认情况下只返回top10的数据。而如果要查询更多数据就需要修改分页参数了。 elasticsearch中通过修改from、size参数来控制要返回的分页结果: from:从第几个文档开始 size:总共查询几个文档 类似于mysql中的limit ?, ? 基本的分页 阅读全文
posted @ 2023-05-23 11:28 JustJavaIt 阅读(65) 评论(0) 推荐(0) 编辑
摘要:搜索的结果可以按照用户指定的方式去处理或展示。 排序 elasticsearch默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。 普通字段排序 keyword、数值、日期类型排序的语法基本一致 阅读全文
posted @ 2023-05-22 15:28 JustJavaIt 阅读(72) 评论(0) 推荐(0) 编辑
摘要:布尔查询是一个或多个查询子句的组合,每一个子句就是一个子查询。子查询的组合方式有: (1)must:必须匹配每个子查询,类似“与” (2)should:选择性匹配子查询,类似“或” (3)must_not:必须不匹配,不参与算分,类似“非” (4)filter:必须匹配,不参与算分 比如在搜索酒店时 阅读全文
posted @ 2023-05-22 14:24 JustJavaIt 阅读(78) 评论(0) 推荐(0) 编辑
摘要:复合(compound)查询:复合查询可以将其它简单查询组合起来,实现更复杂的搜索逻辑。常见的有两种: (1)fuction score:算分函数查询,可以控制文档相关性算分,控制文档排名 (2)bool query:布尔查询,利用逻辑关系组合多个其它的查询,实现复杂搜索 相关性算分 当我们利用ma 阅读全文
posted @ 2023-05-22 11:42 JustJavaIt 阅读(137) 评论(0) 推荐(0) 编辑
摘要:所谓的地理坐标查询,其实就是根据经纬度查询,官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/geo-queries.html 常见的使用场景包括: 携程:搜索我附近的酒店 滴滴:搜索我附近的出租车 微信:搜索我 阅读全文
posted @ 2023-05-19 16:27 JustJavaIt 阅读(73) 评论(0) 推荐(0) 编辑
摘要:精确查询一般是查找keyword、数值、日期、boolean等类型字段。不会对搜索条件分词。常见的有:(1) term:根据词条精确值查询 (2) range:根据值的范围查询 term查询 因为精确查询的字段搜是不分词的字段,因此查询的条件也必须是不分词的词条。查询时,用户输入的内容跟自动值完全匹 阅读全文
posted @ 2023-05-19 15:51 JustJavaIt 阅读(86) 评论(0) 推荐(0) 编辑
摘要:酒店数据的索引库结构 #酒店 mapping POST /hotle { "mappings": { "properties": { "id": { "type": "keyword" }, "name":{ "type": "text", "analyzer": "ik_max_word", "c 阅读全文
posted @ 2022-08-21 17:28 JustJavaIt 阅读(77) 评论(0) 推荐(0) 编辑
摘要:Query DSL https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html Elasticsearch Clients https://www.elastic.co/guide/en/elastic 阅读全文
posted @ 2022-08-21 17:20 JustJavaIt 阅读(17) 评论(0) 推荐(0) 编辑
摘要:elasticsearch的查询依然是基于JSON风格的DSL来实现的。 DSL查询分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: (1) 查询所有:查询出所有数据,一般测试用。 例如:match_all 阅读全文
posted @ 2022-08-21 17:19 JustJavaIt 阅读(114) 评论(0) 推荐(0) 编辑
摘要:需求步骤 需求:利用BulkRequest批量将数据库数据导入到索引库中。 步骤如下: 利用mybatis-plus查询酒店数据。 将查询到的酒店数据(Hotel)转换为文档类型数据(HotelDoc)。 利用JavaRestClient中的BulkRequest批处理,实现批量新增文档。 语法说明 阅读全文
posted @ 2022-08-21 16:42 JustJavaIt 阅读(290) 评论(0) 推荐(0) 编辑
摘要:#查询es中的所有索引库GET /_cat/indices?v 阅读全文
posted @ 2022-08-21 15:32 JustJavaIt 阅读(22) 评论(0) 推荐(0) 编辑
摘要:我们需要将数据库的酒店数据查询出来,写入elasticsearch中。 索引库实体类 数据库查询后的结果是一个Hotel类型的对象。结构如下: @Data @TableName("tb_hotel") public class Hotel { @TableId(type = IdType.INPUT 阅读全文
posted @ 2022-07-31 22:13 JustJavaIt 阅读(157) 评论(0) 推荐(0) 编辑
摘要:创建索引库 DSL语句 : PUT /索引库名 代码分为三步: 1)创建Request对象。因为是创建索引库的操作,因此Request是CreateIndexRequest。 2)添加请求参数,其实就是DSL的JSON参数部分。因为json字符串很长,这里是定义了静态字符串常量MAPPING_TEM 阅读全文
posted @ 2022-07-31 17:33 JustJavaIt 阅读(147) 评论(0) 推荐(0) 编辑
摘要:客户端API ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。 官方文档地址:https://www.elastic.co/guide/en/elasticsearch/client/index.html 其中的Java Rest C 阅读全文
posted @ 2022-07-31 16:30 JustJavaIt 阅读(254) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示