当前位置: 首页 > news >正文

ES 数据库

ES 数据库

  • 通过 API 查询
  • 通过 JSON 查询

熟悉 es 的同学都知道 es 一般有两种查询方式

1,在 java 中构建查询对象,调用 es 提供的 api 做查询
2,使用 json 调用接口做查询

查询语句无非是将足够的信息丢给数据库,但是它却和 SQL 不一样有自己独立的查询方式

通过 API 查询

模糊查询

BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();//Elasticsearch 中文会把汉字分词,“王大”会匹配到like“王”和like“大”,要在字段后面接keyword
boolBuilder.must(QueryBuilders.wildcardQuery("userName.keyword","*王大*"));

等于、不等于

BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();
//等于  must
boolBuilder.must(QueryBuilders.termQuery("age","30"));
//不等于  mustNot
boolBuilder.mustNot(QueryBuilders.termQuery("sex","1"));

大于、小于

BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();
//大于
boolBuilder.must(QueryBuilders.rangeQuery("createTime").gt(1609430400000));
//小于
boolBuilder.must(QueryBuilders.rangeQuery("createTime").lt(1672502400000));

es 也是有层级的,下面演示 and 、or 同时使用

BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery();boolBuilder.must(QueryBuilders.termQuery("a",1));QueryBuilder queryBuilder1 = QueryBuilders.boolQuery().must(QueryBuilders.termQuery("b", 2)).must(QueryBuilders.termQuery("c", 3)).mustNot(QueryBuilders.termQuery("d", 4));QueryBuilder queryBuilder2 = QueryBuilders.boolQuery().must(QueryBuilders.termQuery("e", 4)).must(QueryBuilders.termQuery("f", 5));QueryBuilder queryBuilder = QueryBuilders.boolQuery().should(queryBuilder1).should(queryBuilder2);boolBuilder.must(queryBuilder);

等同与这个 sql

select * from user where a=1 and ((b=2 and c=3 and d !=4) or (e=4 and f=5))

通过 JSON 查询

模糊查询

{"query": {"bool": {"adjust_pure_negative": true,"must": [{"wildcard": {"name": {"boost": 1.0,"wildcard": "*小李*"}}}],"boost": 1.0}}
}

等值查询,查询 name = 小李的数据

{"query": {"bool": {"adjust_pure_negative": true,"must": [{"term": {"name": {"boost": 1.0,"value": "小李"}}}],"boost": 1.0}}
}

范围查询,查询年龄大于等于18,并且小于等于50的数据

{"query": {"range": {"age": {"include_lower": true,"include_upper": true,"from": 18,"boost": 1.0,"to": 50}}}
}

多条件查询,查询姓名为小李,并且年龄在10-50之间的文档

{"query": {"bool": {"adjust_pure_negative": true,"must": [{"term": {"name": {"boost": 1.0,"value": "小李"}}},{"range": {"age": {"include_lower": true,"include_upper": true,"from": 10,"boost": 1.0,"to": 50}}}],"boost": 1.0}}
}
http://www.lryc.cn/news/197952.html

相关文章:

  • 面试经典150题——Day14
  • Pika v3.5.1发布!
  • Kotlin中的数组
  • (3) OpenCV图像处理kNN近邻算法-识别摄像头数字
  • 上海亚商投顾:沪指震荡调整 转基因概念股逆势大涨
  • abap中程序跳转(全)
  • 启动速度提升 10 倍:Apache Dubbo 静态化方案深入解析
  • PCB命名规则-allegro
  • [架构之路-240]:目标系统 - 纵向分层 - 应用层 - 应用层协议与业务应用程序的多样化,与大自然生物的丰富多彩,异曲同工
  • 探索数字时代的核心:服务器如何塑造未来并助你成就大业
  • spring6-资源操作:Resources
  • C语言 内存
  • Java设计模式之备忘录模式
  • 深度学习 | Pytorch深度学习实践
  • Elasticsearch7.9.3保姆级安装教程
  • 深入使用探讨 PuppeteerSharp 抓取 LinkedIn 页面的步骤
  • 联合体(共用体)
  • 从零开始:GitFlow详细教程,轻松掌握分支策略
  • 深度学习硬件介绍
  • 利用向导创建MFC
  • MySQL 8.0 OCP认证精讲视频、环境和题库之五 事务、缓存
  • ACL配置
  • 微信小程序修改van-popup的背景颜色
  • SpringCloud-Nacos
  • 动态规划12(Leetcode221最大正方形)
  • 【Git】bad signature 0x00000000 index file corrupt. fatal: index file corrupt
  • GO 语言的函数??
  • 机器学习基础之《回归与聚类算法(3)—线性回归优化:岭回归》
  • DirectX3D 正交投影学习记录
  • 数据挖掘十大算法--Apriori算法