JAVA操作ES中的BoolQueryBuilder 查询方法
一,创建es的连接
public TransportClient transportClient(){
Settings settings = Settings.builder()
.put("cluster.name", "elasticsearch")
.build();
TransportClient client = new PreBuiltTransportClient(settings);
TransportAddress transportAddress = null;
try {
transportAddress = new TransportAddress(InetAddress.getByName(host), Integer.valueOf(port));
} catch (UnknownHostException e) {
e.printStackTrace();
}
client.addTransportAddress(transportAddress);
return client;
}
二,java es api的添加操作
transportClient.prepareIndex("search_index", "doc").setSource(json, XContentType.JSON).get();
三,java es api的修改操作
transportClient.prepareUpdate("search_index", "doc","gug4u3EBSHOgAqyn-5aI").setSource(json, XContentType.JSON).get();
四,java es api的删除操作
transportClient.prepareDelete("search_index", "doc", "gug4u3EBSHOgAqyn-5aI").get();
五,查询QueryBuilders
BoolQueryBuilder queryBuilder= QueryBuilders.boolQuery();
1,matchAllQuery匹配所有
queryBuilder.matchAllQuery();
2,termQuery精准匹配,大小写敏感且不支持
queryBuilder.termQuery("key", value) 一次匹配一个值,完全匹配
queryBuilder.termsQuery("key", obj1, obj2..) 一次匹配多个值
3,matchPhraseQuery对中文精确匹配
queryBuilder.matchPhraseQuery("key", value)
4,matchQuery("key", Obj) 单个匹配, field不支持通配符, 前缀具高级特性
queryBuilder.matchQuery(key, value);
5,multiMatchQuery("text", "field1", "field2"..); 匹配多个字段, field有通配符忒行
queryBuilder.multiMatchQuery(value, key1, key2, key3);
6,组合查询
* must: AND
* mustNot: NOT
* should:: OR
queryBuilder.must(QueryBuilders.termQuery("user", "kimchy"))
.mustNot(QueryBuilders.termQuery("message", "nihao"))
.should(QueryBuilders.termQuery("gender", "male"));
7.should和must
should查询在mysql中就好比是or或,但在es中使用should查询必须要和must一起使用才可以,相当于must[should A,should B],中文解释就好比是满足A或者是B条件的数据,如下这一段shoudl语句的大概意思是满足是用户A上传并且permission状态是private或者permission状态是public的
public void should(){
// 最外层bool
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
// 使用should的bool
BoolQueryBuilder shouldBuilder= QueryBuilders.boolQuery();
BoolQueryBuilder must = QueryBuilders.boolQuery().must(QueryBuilders.termQuery(DocumentFieldEnum.upload_user_name.name(), "用户A")) .must(QueryBuilders.termQuery(DocumentFieldEnum.permission.name(), PermissionEnum.PRIVATE.getKey()));
shouldBuilder.should(must);
shouldBuilder.should(QueryBuilders.termQuery(DocumentFieldEnum.permission.name(), PermissionEnum.PUBLIC.getKey()));
boolQueryBuilder.must(shouldBuilder);
}
JAVA操作ES中的BoolQueryBuilder 查询方法相关推荐
- java操作es之各种高级查询
目录 一.springboot整合es 1.1 pom依赖 1.2 yml配置 1.3 创建索引 1.4 创建映射 1.5 写入数据 二.Java API操作ES 2.1 查询全部 2.2 精准匹配 ...
- Elasticsearch笔记五之java操作es
Java操作es集群步骤1:配置集群对象信息:2:创建客户端:3:查看集群信息 1:集群名称 默认集群名为elasticsearch,如果集群名称和指定的不一致则在使用节点资源时会报错. 2:嗅探功能 ...
- Elasticsearch 之java操作es
https://blog.csdn.net/ty4315/article/details/52434296 Java操作es集群步骤1:配置集群对象信息:2:创建客户端:3:查看集群信息 1:集群名称 ...
- python中字典的查询方法
python中字典的查询方法包括: 1.直接用key查询,例如dict[key] 返回的就是这个key值对应的value值,如果没有这个key值,则会报错 2.用内置函数items() 返回的就是每一 ...
- Java的Map中的map.keySet()方法
参考: java 常用的数据结构 一:Java的Map中的map.keySet()方法 该方法返回map中所有key值的列表. 今天再代码中看到了Map集合中的HashMap的map.keySet() ...
- java操作集合中 concurrentModifyException 异常的原因分析
java操作集合中 concurrentModifyException 异常的原因分析 参考文章: (1)java操作集合中 concurrentModifyException 异常的原因分析 (2) ...
- java有push方法么_[Java教程]js中push和join方法使用介绍
[Java教程]js中push和join方法使用介绍 0 2013-10-09 07:00:17 push和join方法想必大家并不陌生吧,在本文将为大家详细介绍下js中的push和join方法的使用 ...
- java窗体中添加图片_在java窗体程序中添加图片的方法
在java窗体程序中添加图片的方法 发布时间:2020-06-16 11:24:13 来源:亿速云 阅读:148 作者:Leah 这篇文章主要为大家详细介绍了在java窗体程序中添加图片的方法,图文详 ...
- ThinkPHP中的统计查询方法
ThinkPHP中的统计查询方法 在ThinkPHP中系统提供以下几个查询方法的使用,方便于在后期需要做统计的使用. • count() 表示查询表中总的记录数 • max() 表示查询某个字段的最大 ...
最新文章
- 细看晶圆代工之争,纳米制程是什么
- c mysql封装 jdbc_利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现
- 一切都是对象---JAVA编程思想
- GCC 编译时优化某一个或几个函数或者不优化某一个或几个函数
- 利用python创建学生管理系统软件代码赏析
- CNN反向传播算法过程
- NHibernate,我越看越傻了.........
- rvm install 1.9.2 p136版本ruby
- mysql中如何批量删除冗余数据库_WordPress清理数据库中的冗余数据加速网站运行速度...
- 经济学原理 下载 曼昆_22考研必看,上海财经的大学801经济学报录比及考情分析(超详细)...
- 刑法中关于计算机犯罪的定义,界定计算机犯罪概念的原则
- KALI虚拟机挂代理教程
- 玩转Fasttext
- PDF怎么转换成Excel?转后一页一个子表怎么合并?
- 使用cle 调用opengl的简单例子(android)
- 虚拟机 Centos8 服务器密码忘了
- 常用linux命令(摘自他人笔记)
- EXCEL进度管理很好用的模板
- Tinker:播放assets文件里视频文件的问题?
- 汽车维修管理系统汽车维修管理系统采用B / S架构,主要使用Java技术进行开发,结合最新流行的java和mysql的SSM框架技术。
热门文章
- flex简介——css
- logit模型应用实例_广义线性模型应用举例之beta回归及R计算
- 手把手教你智能硬件开发(六)直流马达
- 谈谈反爬虫“政策与对策”
- Windows下编译MICO源代码遇到的问题
- Lattice Mico8在LMS添加UART
- React构造函数中为什么要写 super(props)
- fifo的rdata_FIFO的使用总结
- 大话卫星导航中的信号处理系列文章——GPS信号L1频点的中频数据生成与验证
- matlab怎么求三次微分,matlab课设三阶微分方程多种方法求解.doc