JAVA使用ElasticSearch查询in和not in的实现方式

当我们使用Java对Elasticsearch进行查询时,经常会涉及到innot in这两种条件查询,本文将介绍如何使用Java实现这两种条件查询。

Elasticsearch in查询的实现

首先,我们需要导入相关的依赖库:

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.3.1</version>
</dependency>

然后,我们需要创建一个org.elasticsearch.index.query.TermsQueryBuilder对象,并将它添加到org.elasticsearch.index.query.BoolQueryBuilder对象中。具体实现代码如下:

List<String> values = Arrays.asList("value1", "value2", "value3");
TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("field", values);
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder().must(termsQueryBuilder);
SearchRequest searchRequest = new SearchRequest("index_name");
searchRequest.source(new SearchSourceBuilder().query(boolQueryBuilder));

其中,values是一个包含需要查询的值的列表,field是需要查询的字段名,index_name是需要查询的索引名称。

下面是一个完整的示例代码,该示例从名为test_index的索引中查询field_name字段中有value1value2value3的文档:

RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));
List<String> values = Arrays.asList("value1", "value2", "value3");
TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("field_name", values);
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder().must(termsQueryBuilder);
SearchRequest searchRequest = new SearchRequest("test_index");
searchRequest.source(new SearchSourceBuilder().query(boolQueryBuilder));
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

Elasticsearch not in查询的实现

要实现not in查询,我们可以使用range查询和相应的逻辑操作符。具体实现代码如下:

List<String> values = Arrays.asList("value1", "value2", "value3");
TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("field", values);
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder().mustNot(termsQueryBuilder);
SearchRequest searchRequest = new SearchRequest("index_name");
searchRequest.source(new SearchSourceBuilder().query(boolQueryBuilder));

其中,mustNot方法用于构建一个not in的查询条件。

下面是一个完整的示例代码,该示例从名为test_index的索引中查询field_name字段中不包含value1value2value3的文档:

RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));
List<String> values = Arrays.asList("value1", "value2", "value3");
TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery("field_name", values);
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder().mustNot(termsQueryBuilder);
SearchRequest searchRequest = new SearchRequest("test_index");
searchRequest.source(new SearchSourceBuilder().query(boolQueryBuilder));
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

以上就是使用Java实现Elasticsearch in和not in查询的完整攻略,包含两条示例说明,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA使用ElasticSearch查询in和not in的实现方式 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • 领跑业界!腾讯云原生首发容器服务3大能力!

    随着用户需求的升级和云原生技术的发展,云原生已成为企业应用上云降本增效的利器。11 月30 日,在 2022 腾讯全球数字生态大会云原生专场,腾讯云发布了容器服务的三项能力全新升级,并向外界解读了腾讯自研业务上云的经验价值和技术成果。 会议开场,腾讯云原生产品中心架构总监 陈浪交 讲述了腾讯云容器服务 TKE 过去几年的发展历程。自 2018 年上线以来,T…

    2023年4月10日
    00
  • 【云计算】开源装机自动化系统 CloudBoot OSInstall 介绍

    “CloudBoot”(OSinstall) 发布了。 产品更新及特点如下: 新增虚拟化操作系统适配:支持主流操作系统:RedHat、CentOS、SUSE、Ubuntu、Windows Server 2012、Windows Server2008、VMware Esxi、Openstack等 新增服务器硬件适配:支持主流服务器厂商的硬件, 华为、H3C、D…

    云计算 2023年4月13日
    00
  • 机械硬盘还需要吗?什么人还需要一块机械硬盘?

    机械硬盘还需要吗? 机械硬盘是电脑存储数据的最基本和最常见的存储设备之一,但是随着固态硬盘在性能、价格方面的逐渐提升,机械硬盘是否还有存在的必要呢?下面我们来深入探究这个话题。 机械硬盘的优点 存储容量大:机械硬盘的存储容量一般比同等价位的固态硬盘要大得多,对于一些需要大量储存数据的用户来说,机械硬盘仍然是一个不错的选择。 耐用:机械硬盘的优缺点之一就是机械…

    云计算 2023年5月17日
    00
  • 云计算与 Cloud Native | 数人云CEO王璞@KVM分享实录

    今天小数又给大家带来一篇干货满满的分享——来自KVM社区线上群分享的实录,分享嘉宾是数人云CEO王璞,题目是《云计算与 Cloud Native》。这是数人云在KVM社区群分享的第一弹,之后还有数人云CTO肖德时、COO谢乐冰的Docker与Mesos的应用实战经验分享,敬请期待! 嘉宾介绍 王璞,数人云创始人兼CEO美国 George Mason 大学计算…

    云计算 2023年4月12日
    00
  • scratch和python哪个编程语言更适合少儿? Scratch/Py/C++/Java区别介绍

    Scratch和Python哪个编程语言更适合少儿? Scratch和Python都是非常流行的编程语言,它们都有自己的优点和适用场景。那么,Scratch和Python哪个编程语言更适合少儿呢?本文将从以下几个方面进行详细介绍和比较。 1. 编程语言的难易程度 Scratch是一种基于块的编程语言,它使用图形化的编程块来代替传统的编程语言中的代码。这种方式…

    云计算 2023年5月16日
    00
  • Win10正式版采用全新商业模式 标志着微软战略转型

    Win10正式版采用全新商业模式 标志着微软战略转型 什么是Win10全新商业模式 Win10全新商业模式指的是微软将操作系统的更新和维护工作转变为服务形式,采用“软件即服务”(SaaS)的商业模式,逐渐放弃以前的每几年发布一个新版本的模式。 微软战略转型的原因 微软战略转型的原因主要是受到移动和云计算的影响。传统的PC市场逐渐被移动设备所代替,云计算则成为…

    云计算 2023年5月17日
    00
  • 国外 10 个最佳的云计算服务提供商

    云计算(Cloud computing),是一种新兴的共享基础架构的方法,可以将巨大的系统池连接在一起以提供各种IT服务。 本文介绍 10 个最佳的云计算服务提供商,因为从国外文章翻译过来,因此这些服务商都是国外的。 1) Amazon Cloud Service 2) verizon Service Provider 3) IBM Cloud   4) S…

    云计算 2023年4月12日
    00
  • 云计算课程作业专业词汇

    一、虚拟化 虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。 虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成…

    云计算 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部