写BUG的派大星

Patrick Star

  • 首页
  • 归档

  • 搜索
设计模式 Gis Kafka Druid 微信小程序 Java 开源项目源码 物体识别 机器学习 Mybatis 微服务 Feign OpenVPN CSS Streamsets CDH SpringCloud SpringBoot maven 分布式 Shell Tree Linux js WebSocket 多线程 集群 Hadoop 大数据 JDK ElasticSearch MySQL 数据库 Redis Http Nginx

ElasticSearch实现sql中的in和not in(JAVA)

发表于 2020-10-30 | 分类于 Java | 0 | 阅读次数 1060

实现类似于select ... from ... where version in ('kgy30a', '7IQuq3IigP2')这种功能。

需要重点注意的是,这里要用到的是terms,不是term

in

{
  "query": {
    "terms": {
      "version": [
        "2", "3"
      ]
    }
  }
}

对应的Java代码如下:


SearchRequestBuilder searchRequestBuilder =
                client.prepareSearch(index).setTypes(type).setSearchType(SearchType.QUERY_THEN_FETCH);
// versionList即代表in后面的列表
searchRequestBuilder.setQuery(QueryBuilders.termsQuery("version", versionList));

这里不管什么版本的API都大差不差,找到termsQuery就可以了

not in

{
  "query": {
    "bool": {
      "must_not": [
        {
          "terms": {
            "version": [
              "kgy30a",
              "7IQuq3IigP2"
            ]
          }
        }
      ]
    }
  }
}

与上面相同,不过需要加上BoolQuery中的mustnot。

  • 本文作者: Patrick
  • 本文链接: https://www.write1bug.cn/archives/elasticsearch实现sql中的in和notinjava
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# 设计模式 # Gis # Kafka # Druid # 微信小程序 # Java # 开源项目源码 # 物体识别 # 机器学习 # Mybatis # 微服务 # Feign # OpenVPN # CSS # Streamsets # CDH # SpringCloud # SpringBoot # maven # 分布式 # Shell # Tree # Linux # js # WebSocket # 多线程 # 集群 # Hadoop # 大数据 # JDK # ElasticSearch # MySQL # 数据库 # Redis # Http # Nginx
Python多线程处理数据,并打印进度条
Mysql存储过程游标的使用
  • 文章目录
  • 站点概览
Patrick

Patrick

不是在改BUG,就是在写BUG。

52 日志
9 分类
36 标签
RSS
E-mail
Creative Commons
© 2018 — 2023 Patrick
人生如逆旅|我亦是行人
鲁ICP备18043140号-1