【ElasticSearch实战】——ES常用查询条件与mysql对比

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 【ElasticSearch实战】——ES常用查询条件与mysql对比

类比mysql,我们需要=、>、>=、<、<= 、or、and、in、like、count、sum、group by、order by、limit

在高版本的ES里面使用了boolquery替换了filter

1、等于号=

QueryBuilders.termQuery("isDel",1));
//termQuery相当于=,相当于isDel=1


2、大于小于号


QueryBuilders.rangeQuery("overdueStartTime").lte(startDate.getTime())
//rangeQuery 
//lte   <=
//lt    <
//gte   >=
//gt    >

3、or、and

boolQueryBuilder.must(QueryBuilders.termQuery("isDel",req.getIs_del()));
//must相当于and
caseStatusQuery.should(QueryBuilders.termQuery("caseStatus",s));
//should相当于or

4、in

QueryBuilders.termsQuery("clientCompanyId",req.getClientCompanyIdList())
//termQuery相当于in,可以传递list

5、like

QueryBuilders.wildcardQuery("phone1", "*" + req.getTelephone() + "*")
//wildcard 正则匹配
QueryBuilders.matchPhraseQuery("debtorName", req.getDebtor_name())
//matchPhrase 不会分词,直接匹配有完整相关短语的记录

6、sum&&count


AggregationBuilder debtTotalSum = AggregationBuilders.sum(DEBT_TOTAL_SUM_KEY).field("debtTotal");
AggregationBuilder debtTotalCount = AggregationBuilders.count(DEBT_TOTAL_COUNT_KEY).field("debtTotal");


7、order by and limit

SearchResponse searchResponse = client.prepareSearch(ElasticSearchUtil.getIndexName())
                .setTypes(ElasticSearchUtil.TYPE_NAME)
                .setQuery(boolQueryBuilder)
                        //指定查询字段
                .addStoredField("id")
                .addSort(order, sortOrder)
                        //分页
                .setFrom((currentPage - 1) * limit).setSize(limit)
                .execute()
                .actionGet();

8、批量插入

public  void batchInsert(List<CaseTable> list,Client client) {
        LOGGER.info("---------案件批量插入索引开始--------");
        BulkRequestBuilder bulkRequest = client.prepareBulk();
        long start = System.currentTimeMillis();
        BulkRequestBuilder delRequest = client.prepareBulk();
        for (CaseTable caseTable :list){
            IndexRequestBuilder ir = client.prepareIndex()
                    .setIndex(ElasticSearchUtil.INDEX_NAME_CASE)
                    .setType(ElasticSearchUtil.TYPE_NAME_CASE)
                    .setId(caseTable.getId().toString())
                    .setSource(JSON.toJSONString(caseTable));
            bulkRequest.add(ir);
        start = System.currentTimeMillis();
        BulkResponse bulkResponse = bulkRequest.execute().actionGet();
        LOGGER.info("案件批量插入循环所用时间 search time:{}ms", System.currentTimeMillis() - start);
        if (!bulkResponse.hasFailures()) {
            LOGGER.info("----------案件批量插入成功一轮------------");
        }
    }


9、。。。。后续会继续更新

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
21天前
|
存储 关系型数据库 MySQL
提高MySQL查询性能的方法有很多
提高MySQL查询性能的方法有很多
103 7
|
21天前
|
存储 关系型数据库 MySQL
提高MySQL的查询性能
提高MySQL的查询性能
38 4
|
6天前
|
架构师 关系型数据库 MySQL
MySQL最左前缀优化原则:深入解析与实战应用
【10月更文挑战第12天】在数据库架构设计与优化中,索引的使用是提升查询性能的关键手段之一。其中,MySQL的最左前缀优化原则(Leftmost Prefix Principle)是复合索引(Composite Index)应用中的核心策略。作为资深架构师,深入理解并掌握这一原则,对于平衡数据库性能与维护成本至关重要。本文将详细解读最左前缀优化原则的功能特点、业务场景、优缺点、底层原理,并通过Java示例展示其实现方式。
16 1
|
10天前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
50 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
16天前
|
存储 SQL 关系型数据库
MySQL 给查询结果增列并自定义列数据
MySQL 给查询结果增列并自定义列数据
126 2
|
16天前
|
存储 SQL 关系型数据库
MySQL查询数据库锁表的SQL语句
MySQL查询数据库锁表的SQL语句
50 1
|
16天前
|
SQL 存储 关系型数据库
MySQL能否查询某张表的操作记录
MySQL能否查询某张表的操作记录
121 1
|
16天前
|
关系型数据库 MySQL Serverless
MySQL DATETIME 查询条件
MySQL DATETIME 查询条件
29 1
|
17天前
|
关系型数据库 MySQL 数据库
mysql的查询
MySQL数据库查询语句的基本用法,包括基础查询、条件查询、排序、分组查询、聚合函数的使用以及分页查询的方法。
26 2
|
17天前
|
缓存 关系型数据库 MySQL
MySQL 满足条件函数中使用查询最大值函数
MySQL 满足条件函数中使用查询最大值函数
51 1