java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询

时间:2022-12-17 23:14:55

1、前缀查询(prefix)

//prefix前缀查询
@Test
public void test15() throws UnknownHostException {
//1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名称
Settings settings = Settings.builder().put("cluster.name", "my-application").build();
//2.创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings)
//获取es主机中节点的ip地址及端口号(以下是单个节点案例)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));
//prefixQuery 第一个参数为字段名,后面是以zhao开头的条件进行查询
QueryBuilder builder = QueryBuilders.prefixQuery("name", "zhao");
SearchResponse response = client.prepareSearch("lib3").setQuery(builder).get();
SearchHits hits = response.getHits();
for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());
//将获取的值转换成map的形式
Map<String, Object> map = hit.getSourceAsMap();
for(String key:map.keySet()) {
System.out.println(key +" key对应的值为:" +map.get(key));
}
}
}

2、wildcard模糊查询

//wildcard模糊查询
@Test
public void test16() throws UnknownHostException {
//1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名称
Settings settings = Settings.builder().put("cluster.name", "my-application").build();
//2.创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings)
//获取es主机中节点的ip地址及端口号(以下是单个节点案例)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));
//wildcardQuery模糊查询
QueryBuilder builder = QueryBuilders.wildcardQuery("name", "zhao*");
SearchResponse response = client.prepareSearch("lib3").setQuery(builder).get();
SearchHits hits = response.getHits();
for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());
//将获取的值转换成map的形式
Map<String, Object> map = hit.getSourceAsMap();
for(String key:map.keySet()) {
System.out.println(key +" key对应的值为:" +map.get(key));
}
}
}

3、fuzzy模糊查询

  说明:fuzzy才是实现真正的模糊查询,我们输入的字符可以是个大概,他可以根据我们输入的文字大概进行匹配查询,具体可看文章中的解释和代码,注意与wildcard模糊查询的区别

//fuzzy模糊查询(输入的值输入个大概也可以查询出来)
@Test
public void test17() throws UnknownHostException {
//1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名称
Settings settings = Settings.builder().put("cluster.name", "my-application").build();
//2.创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings)
//获取es主机中节点的ip地址及端口号(以下是单个节点案例)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));
//fuzzyQuery模糊查询
QueryBuilder builder = QueryBuilders.fuzzyQuery("name", "chagge");
SearchResponse response = client.prepareSearch("lib3").setQuery(builder).get();
SearchHits hits = response.getHits();
for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());
//将获取的值转换成map的形式
Map<String, Object> map = hit.getSourceAsMap();
for(String key:map.keySet()) {
System.out.println(key +" key对应的值为:" +map.get(key));
}
}
} //typeQuery类型查询
@Test
public void test18() throws UnknownHostException {
//1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名称
Settings settings = Settings.builder().put("cluster.name", "my-application").build();
//2.创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings)
//获取es主机中节点的ip地址及端口号(以下是单个节点案例)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));
//typeQuery类型查询
QueryBuilder builder = QueryBuilders.typeQuery("blog");
SearchResponse response = client.prepareSearch("index1").setQuery(builder).get();
SearchHits hits = response.getHits();
for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());
//将获取的值转换成map的形式
Map<String, Object> map = hit.getSourceAsMap();
for(String key:map.keySet()) {
System.out.println(key +" key对应的值为:" +map.get(key));
}
}
}

4、ids查询

  说明:根据多个id值进行查询

//idsQuery id查询(可以同时根据多个id进行查询)
@Test
public void test19() throws UnknownHostException {
//1、指定es集群 cluster.name 是固定的key值,my-application是ES集群的名称
Settings settings = Settings.builder().put("cluster.name", "my-application").build();
//2.创建访问ES服务器的客户端
TransportClient client = new PreBuiltTransportClient(settings)
//获取es主机中节点的ip地址及端口号(以下是单个节点案例)
.addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.1.94"), 9300));
//idsQuery id查询
QueryBuilder builder = QueryBuilders.idsQuery("1","2");
SearchResponse response = client.prepareSearch("lib3").setQuery(builder).get();
SearchHits hits = response.getHits();
for(SearchHit hit:hits) {
System.out.println(hit.getSourceAsString());
//将获取的值转换成map的形式
Map<String, Object> map = hit.getSourceAsMap();
for(String key:map.keySet()) {
System.out.println(key +" key对应的值为:" +map.get(key));
}
}
}

下一篇博客本人将书写java操作elasticsearch实现聚合查询。对后期博客感兴趣的朋友可以关注交流,转发请说明出处,本人的博客地址为:https://www.cnblogs.com/chenyuanbo/

技术在于交流!

java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询的更多相关文章

  1. java操作elasticsearch实现条件查询(match、multiMatch、term、terms、reange)

    1.条件match query查询 //条件查询match query @Test public void test10() throws UnknownHostException { //1.指定e ...

  2. java操作elasticsearch实现聚合查询

    1.max 最大值 //max 求最大值 @Test public void test30() throws UnknownHostException{ //1.指定es集群 cluster.name ...

  3. java操作elasticsearch实现查询删除和查询所有

    后期博客本人都只给出代码,具体的说明在代码中也有注释. 1.查询删除 //查询删除:将查询到的数据进行删除 @Test public void test8() throws UnknownHostEx ...

  4. java操作elasticsearch实现组合桶聚合

    1.terms分组查询 //分组聚合 @Test public void test40() throws UnknownHostException{ //1.指定es集群 cluster.name 是 ...

  5. java操作elasticsearch实现query String

    1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...

  6. java操作elasticsearch实现批量添加数据(bulk)

    java操作elasticsearch实现批量添加主要使用了bulk 代码如下: //bulk批量操作(批量添加) @Test public void test7() throws IOExcepti ...

  7. java操作elasticsearch实现基本的增删改查操作

    一.在进行java操作elasticsearch之前,请确认好集群的名称及对应的ES节点ip和端口 1.查看ES的集群名称 #进入elasticsearch.yml配置文件/opt/elasticse ...

  8. Java操作ElasticSearch之创建客户端连接

    Java操作ElasticSearch之创建客户端连接 3 发布时间:『 2017-09-11 17:02』  博客类别:elasticsearch  阅读(3157) Java操作ElasticSe ...

  9. 使用java操作elasticsearch&lpar;1&rpar;

    1.安装elasticsearch 这儿用的是5.6.9的版本,下载安装过程较为简单,在官网上下载好后解压到文件夹.需要注意的是在elasticsearch-5.6.9\config下的elastic ...

随机推荐

  1. ReactiveCocoa源码拆分解析&lpar;二&rpar;

    (整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) 上面抽丝剥茧的把最主要的信号机制给分离开了.但在RA ...

  2. 20145206《Java程序设计》实验三实验报告

    20145206<Java程序设计>实验三实验报告 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运 ...

  3. NPOI导出Excel表功能实现&lpar;多个工作簿&rpar;&lpar;备用)

    Excel生成操作类: 代码 using System; using System.Collections.Generic; using System.Text; using System.IO; u ...

  4. ios8&period;3 编译 arm64版 openssl-1&period;0&period;2a

    xcode是6.3版的,ios sdk 是8.3的, 到http://www.openssl.org/source/下载最新版本openssl-1.0.2a 解压后用文本编辑器打开configure文 ...

  5. Decimal

    Description 任意一个分数都是有理数,对于任意一个有限小数,我们都可以表示成一个无限循环小数的形式(在其末尾添加0),对于任意一个无限循环小数都可以转化成一个分数.现在你的任务就是将任意一个 ...

  6. EasyUI在MVC4中需要部分刷新页面时load&lpar;&rpar;后页面变形问题!

    最近在使用MVC4与EasUI过程中遇到些容易导致界面变形的问题,纠结了很久,但其实当发现问题在哪里时,倒觉得最终还是自己对MVC4的概念没把握好,OK,show time.  本示例Contact ...

  7. swift 它们的定义TabBarItem

    1.效果图     2.NewsViewController.swift // // NewsViewController.swift // NavigationDemo // // Created ...

  8. Hibernate 中 简便proxool连接池配置

    资源&文档 请百度云盘下载:http://pan.baidu.com/s/1hsmVVBu     提取码y966

  9. React Native之使用导航器跳转页面(react-navigation)

    react-navigation是一个导航库,要使用react-navigation来实现跳转页面,首先得在项目中安装此库,由于Yarn是Facebook提供的替代npm的工具,可以加速node模块的 ...

  10. 博客地址更改为csdn博客:https&colon;&sol;&sol;blog&period;csdn&period;net&sol;zysps1

    由于博客园不支持markdown的数学公式等语法,有时分享不方便,特更改阵地为csdn:https://blog.csdn.net/zysps1