ElasticSearch-学习笔记04【Java客户端操作索引库】
- Java后端-学习路线-笔记汇总表【黑马程序员】
- ElasticSearch-学习笔记01【ElasticSearch基本介绍】【day01】
- ElasticSearch-学习笔记02【ElasticSearch索引库维护】
- ElasticSearch-学习笔记03【ElasticSearch集群】
- ElasticSearch-学习笔记04【Java客户端操作索引库】【day02】
- ElasticSearch-学习笔记05【SpringDataElasticSearch】
目录
01-ES课程介绍
02-使用Java客户端创建索引库
03-使用Java客户端设置mapping步骤
04-使用java客户端设置mapping映射
05-向索引库中添加文档
06-添加文档的第二种方式
07-索引库查询_根据id查询
08-索引库查询_根据term查询
09-索引库查询_queryString查询
10-查询分页设置
插入数据
设置分页
11-查询结果高亮显示
01-ES课程介绍
学习目标:
能够使用java客户端完成创建、删除索引的操作
能够使用java客户端完成文档的增删改的操作
能够使用java客户端完成文档的查询操作
能够完成文档的分页操作
能够完成文档的高亮查询操作
能够搭建Spring Data ElasticSearch的环境
能够完成Spring Data ElasticSearch的基本增删改查操作
能够掌握基本条件查询的方法命名规则
管理ES的客户端工具:postman、head插件。
02-使用Java客户端创建索引库
一、使用Java客户端管理ES
1、创建索引库
步骤:
1)创建一个Java工程
2)添加jar包,添加maven的坐标
3)编写测试方法实现创建索引库
1、创建一个Settings对象,相当于是一个配置信息,主要用于配置集群的名称。
2、创建一个客户端Client对象
3、使用client对象创建一个索引库
4、关闭client对象
9201、9202、9203:对外提供http服务的端口号;
9301、9302、9303:tcp形式连接ES服务器(InetSocketTransportAddress方法)。
package com.itheima.es;import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.Test;import java.net.InetAddress;public class ElasticSearchClientTest {@Testpublic void createIndex() throws Exception {//1、创建一个Settings对象,相当于是一个配置信息,主要配置集群的名称。Settings settings = Settings.builder().put("cluster.name", "my-elasticsearch").build();//2、创建一个客户端Client对象TransportClient client = new PreBuiltTransportClient(settings);//向client中添加三个ip地址的端口号,防止一个服务器不好使然后出现bugclient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9301));client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9302));client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9303));//3、使用client对象创建一个索引库client.admin().indices().prepareCreate("index_hello").get();//.get()执行操作//index_hello索引名称//4、关闭client对象client.close();}
}
ElasticSearch搭建集群时的闪退问题
03-使用Java客户端设置mapping步骤
一、使用Java客户端管理ES
1、创建索引库
步骤:
1)创建一个Java工程
2)添加jar包,添加maven的坐标
3)编写测试方法实现创建索引库
1、创建一个Settings对象,相当于是一个配置信息,主要配置集群的名称。
2、创建一个客户端Client对象
3、使用client对象创建一个索引库
4、关闭client对象
2、使用Java客户端设置Mappings
步骤:
1)创建一个Settings对象
2)创建一个Client对象
3)创建一个mapping信息,应该是一个json数据,可以是字符串,也可以是XContextBuilder对象
4)使用client向es服务器发送mapping信息
5)关闭client对象
04-使用java客户端设置mapping映射
package com.itheima.es;import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.Test;import java.net.InetAddress;public class ElasticSearchClientTest {@Testpublic void createIndex() throws Exception {//1、创建一个Settings对象,相当于是一个配置信息,主要配置集群的名称。Settings settings = Settings.builder().put("cluster.name", "my-elasticsearch").build();//2、创建一个客户端Client对象TransportClient client = new PreBuiltTransportClient(settings);//向client中添加三个ip地址的端口号,防止一个服务器不好使然后出现bugclient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9301));client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9302));client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9303));//3、使用client对象创建一个索引库client.admin().indices().prepareCreate("index_hello").get();//index_hello索引名称、get()执行操作//4、关闭client对象client.close();}@Testpublic void setMappings() throws Exception {//1、创建一个Settings对象Settings settings = Settings.builder().put("cluster.name", "my-elasticsearch").build();//2、创建一个Client对象,创建一个TransportClient对象TransportClient client = new PreBuiltTransportClient(settings).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9301)).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9302)).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9303));//3、创建一个mapping信息,应该是一个json数据,可以是字符串,也可以是XContextBuilder对象/*{"article": {type名称,表名:文章"properties": {"id": {//字段"type": "long","store": true// "index": "not_analyzed"},"title": {"type": "text","store": true,"index": true,"analyzer": "ik_smart"//ik_max_word、standard},"content": {"type": "text","store": true,"index": true,//analyzed"analyzer": "ik_smart"//ik_max_word、standard}}}}*/XContentBuilder builder = XContentFactory.jsonBuilder().startObject().startObject("article")//type名称.startObject("properties").startObject("id").field("type", "long").field("store", true).endObject().startObject("title").field("type", "text").field("store", true).field("analyzer", "ik_smart").endObject().startObject("content").field("type", "text").field("store", true).field("analyzer", "ik_smart").endObject().endObject().endObject().endObject();//4、使用client向es服务器发送mapping信息,使用client把mapping信息设置到索引库中client.admin().indices().preparePutMapping("index_hello")//设置要做映射的索引,设置索引库名称.setType("article")//设置要做映射的type,设置type名称.setSource(builder)//mapping信息,可以是XContentBuilder对象也可以是json格式的字符串.get();//5、关闭client对象,关闭链接client.close();}
}
05-向索引库中添加文档
es集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档(数据)包含多个字段(Fields)(列)。
一、使用Java客户端管理ES
1、创建索引库
步骤:
1)创建一个Java工程
2)添加jar包,添加maven的坐标
3)编写测试方法实现创建索引库
1、创建一个Settings对象,相当于是一个配置信息,主要用于配置集群的名称。
2、创建一个客户端Client对象
3、使用client对象创建一个索引库
4、关闭client对象
2、使用Java客户端设置Mappings
步骤:
1)创建一个Settings对象
2)创建一个Client对象
3)创建一个mapping信息,应该是一个json数据,可以是字符串,也可以是XContextBuilder对象
4)使用client向es服务器发送mapping信息
5)关闭client对象
3、添加文档(一行数据)
步骤:
1)创建一个Settings对象
2)创建一个Client对象
3)创建一个文档对象,创建一个json格式的字符串或者使用XContentBuilder
4)使用Client对象吧文档添加到索引库中
5)关闭client每一步都要创建一个client对象,所以将client单独提取出来。
package com.itheima.es;import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.Before;
import org.junit.Test;import java.net.InetAddress;public class ElasticSearchClientTest {private TransportClient client;@Beforepublic void init() throws Exception {//1、创建一个Settings对象Settings settings = Settings.builder().put("cluster.name", "my-elasticsearch").build();//2、创建一个Client对象,创建一个TransportClient对象client = new PreBuiltTransportClient(settings).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9301)).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9302)).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9303));}@Testpublic void createIndex() throws Exception {//1、创建一个Settings对象,相当于是一个配置信息,主要配置集群的名称。Settings settings = Settings.builder().put("cluster.name", "my-elasticsearch").build();//2、创建一个客户端Client对象TransportClient client = new PreBuiltTransportClient(settings);//向client中添加三个ip地址的端口号,防止一个服务器不好使然后出现bugclient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9301));client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9302));client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9303));//3、使用client对象创建一个索引库client.admin().indices().prepareCreate("index_hello").get();//index_hello索引名称、get()执行操作//4、关闭client对象client.close();}@Testpublic void setMappings() throws Exception {//3、创建一个mapping信息,应该是一个json数据,可以是字符串,也可以是XContextBuilder对象/*{"article": {type名称,表名:文章"properties": {"id": {//字段"type": "long","store": true// "index": "not_analyzed"},"title": {"type": "text","store": true,"index": true,"analyzer": "ik_smart"//ik_max_word、standard},"content": {"type": "text","store": true,"index": true,//analyzed"analyzer": "ik_smart"//ik_max_word、standard}}}}*/XContentBuilder builder = XContentFactory.jsonBuilder().startObject().startObject("article")//type名称.startObject("properties").startObject("id").field("type", "long").field("store", true).endObject().startObject("title").field("type", "text").field("store", true).field("analyzer", "ik_smart").endObject().startObject("content").field("type", "text").field("store", true).field("analyzer", "ik_smart").endObject().endObject().endObject().endObject();//4、使用client向es服务器发送mapping信息,使用client把mapping信息设置到索引库中client.admin().indices().preparePutMapping("index_hello")//设置要做映射的索引,设置索引库名称.setType("article")//设置要做映射的type,设置type名称.setSource(builder)//mapping信息,可以是XContentBuilder对象也可以是json格式的字符串.get();//5、关闭client对象,关闭链接client.close();}@Testpublic void testAddDocument() throws Exception {//1)创建一个Settings对象//2)创建一个Client对象//public void init() throws Exception {...}//3)创建一个文档对象,创建一个json格式的字符串或者使用XContentBuilderXContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("id", 2l)//long型数据 2l.field("title", "Cause I got a crush on you who you~").field("content", "你是我的我是你的谁~").endObject();//4)使用Client对象把文档对象添加到索引库中client.prepareIndex().setIndex("index_hello")//设置索引名称.setType("article")//设置typr.setId("2")//设置文档的id,如果不设置id的话es会自动生成一个id.setSource(builder)//设置文档信息,builder对象或json串.get();//执行操作//5)关闭client客户端client.close();}
}
06-添加文档的第二种方式
一、使用Java客户端管理ES
1、创建索引库
2、使用Java客户端设置Mappings
3、添加文档(一行数据)4、添加文档第二种方式
创建一个pojo类
使用工具类把pojo转换成json字符串
把文档写入索引库
@Test
public void testAddDocument2() throws Exception {//创建一个Article对象Article article = new Article();//设置对象的属性article.setId(3l);article.setTitle("再多一眼看一眼就会爆炸~");article.setContent("再近一点靠近点快被融化~");//把article对象转换成json格式的字符串ObjectMapper objectMapper = new ObjectMapper();String jsonDocument = objectMapper.writeValueAsString(article);System.out.println(jsonDocument);//使用client对象把文档写入索引库client.prepareIndex("index_hello", "article", "3").setSource(jsonDocument, XContentType.JSON).get();//关闭客户端client.close();
}
07-索引库查询_根据id查询
一、使用Java客户端管理ES
1、创建索引库
2、使用Java客户端设置Mappings
3、添加文档(一行数据)
4、添加文档的第二种方式二、使用ES客户端实现搜索
1、根据id搜索
QueryBuilder queryBuilder = QueryBuilders.idsQuery().addIds("1", "2");
2、根据Term查询(关键词)
QueryBuilder queryBuilder = QueryBuilders.termQuery("title", "北方");
3、QueryString查询方式(带分析的查询)
QueryBuilder queryBuilder = QueryBuilders.queryStringQuery("速度与激情").defaultField("title");
查询步骤:
1)创建一个Client对象
2)创建一个查询对象,可以使用QueryBuilders工具类创建QueryBuilder对象
3)使用client执行查询
4)得到查询的结果
5)取查询结果的总记录数
6)取查询结果列表
7)关闭client
package com.itheima.es;import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.Before;
import org.junit.Test;import java.net.InetAddress;
import java.util.Iterator;
import java.util.Map;public class SearchIndex {private TransportClient client;@Beforepublic void init() throws Exception {//1、创建一个Settings对象Settings settings = Settings.builder().put("cluster.name", "my-elasticsearch").build();//2、创建一个Client对象,创建一个TransportClient对象client = new PreBuiltTransportClient(settings).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9301)).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9302)).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9303));}@Testpublic void testSearchById() throws Exception {//1)创建一个client对象//public void init() throws Exception {}//2)创建一个查询对象,可以使用QueryBuilders工具类创建QueryBuilder对象QueryBuilder queryBuilder = QueryBuilders.idsQuery().addIds("1", "2");//3)使用client执行查询SearchResponse searchResponse = client.prepareSearch("index_hello").setTypes("article").setQuery(queryBuilder).get();//4)得到查询的结果SearchHits searchHits = searchResponse.getHits();//5)取查询结果的总记录数System.out.println("查询结果总记录数:" + searchHits.getTotalHits());//6)取查询结果列表Iterator<SearchHit> iterator = searchHits.iterator();while (iterator.hasNext()) {SearchHit searchHit = iterator.next();//打印文档对象,以json格式输出System.out.println(searchHit.getSourceAsString());//取文档的属性System.out.println("---------------文档的属性");Map<String, Object> document = searchHit.getSource();System.out.println(document.get("id"));System.out.println(document.get("title"));System.out.println(document.get("content"));}//7)关闭clientclient.close();}
}
08-索引库查询_根据term查询
package com.itheima.es;import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.Before;
import org.junit.Test;import java.net.InetAddress;
import java.util.Iterator;
import java.util.Map;public class SearchIndex {private TransportClient client;@Beforepublic void init() throws Exception {//1、创建一个Settings对象Settings settings = Settings.builder().put("cluster.name", "my-elasticsearch").build();//2、创建一个Client对象,创建一个TransportClient对象client = new PreBuiltTransportClient(settings).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9301)).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9302)).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9303));}private void search(QueryBuilder queryBuilder) throws Exception {//3)使用client执行查询SearchResponse searchResponse = client.prepareSearch("index_hello").setTypes("article").setQuery(queryBuilder).get();//4)得到查询的结果SearchHits searchHits = searchResponse.getHits();//5)取查询结果的总记录数System.out.println("查询结果总记录数:" + searchHits.getTotalHits());//6)取查询结果列表Iterator<SearchHit> iterator = searchHits.iterator();while (iterator.hasNext()) {SearchHit searchHit = iterator.next();//打印文档对象,以json格式输出System.out.println(searchHit.getSourceAsString());//取文档的属性System.out.println("---------------文档的属性");Map<String, Object> document = searchHit.getSource();System.out.println(document.get("id"));System.out.println(document.get("title"));System.out.println(document.get("content"));}//7)关闭clientclient.close();}@Testpublic void testSearchById() throws Exception {//1)创建一个client对象//public void init() throws Exception {}//2)创建一个查询对象,可以使用QueryBuilders工具类创建QueryBuilder对象QueryBuilder queryBuilder = QueryBuilders.idsQuery().addIds("1", "2");search(queryBuilder);}@Testpublic void testQueryByTerm() throws Exception {//创建一个QueryBuilder对象//参数1:要搜索的字段//参数2:要搜索的关键词TermQueryBuilder queryBuilder = QueryBuilders.termQuery("title", "爆炸");//执行查询search(queryBuilder);}
}
09-索引库查询_queryString查询
10-查询分页设置
插入数据
@Test
public void testAddDocument3() throws Exception {//批量添加数据for (int i = 4; i < 100; i++) {//创建一个Article对象Article article = new Article();//设置对象的属性article.setId(i);article.setTitle("再多一眼看一眼就会爆炸~" + i);article.setContent("再近一点靠近点快被融化~" + i);//把article对象转换成json格式的字符串ObjectMapper objectMapper = new ObjectMapper();String jsonDocument = objectMapper.writeValueAsString(article);System.out.println(jsonDocument);//使用client对象把文档写入索引库client.prepareIndex("index_hello", "article", i + "").setSource(jsonDocument, XContentType.JSON).get();}//关闭客户端client.close();
}
设置分页
一、使用Java客户端管理ES
1、创建索引库
2、使用Java客户端设置Mappings
3、添加文档(一行数据)
4、添加文档的第二种方式二、使用ES客户端实现搜索
1、根据id搜索
2、根据Term查询(关键词)
3、QueryString查询方式(带分析的查询)
4、分页的处理
在client对象执行查询之前,设置分页信息。
然后再执行查询
//执行查询
SearchResponse searchResponse = client.prepareSearch("index_hello")
.setTypes("article")
.setQuery(queryBuilder)
//设置分页信息
.setFrom(0)
//每页显示的行数
.setSize(5)
.get();
分页需要设置两个值,一个from、size
from:起始的行号,从0开始。
size:每页显示的记录数
11-查询结果高亮显示
一、使用Java客户端管理ES
1、创建索引库
2、使用Java客户端设置Mappings
3、添加文档(一行数据)
4、添加文档的第二种方式二、使用ES客户端实现搜索
1、根据id搜索
2、根据Term查询(关键词)
3、QueryString查询方式(带分析的查询)
4、分页的处理
5、查询结果高亮显示
(1)高亮的配置
1)设置高亮显示的字段
2)设置高亮显示的前缀
3)设置高亮显示的后缀
(2)在client对象执行查询之前,设置高亮显示的信息
(3)遍历结果列表时可以从结果中取高亮结果
给关键词的前后加上HTML标签作为前后缀。
package com.itheima.es;import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.Before;
import org.junit.Test;import java.net.InetAddress;
import java.util.Iterator;
import java.util.Map;public class SearchIndex {private TransportClient client;@Beforepublic void init() throws Exception {//1、创建一个Settings对象Settings settings = Settings.builder().put("cluster.name", "my-elasticsearch").build();//2、创建一个Client对象,创建一个TransportClient对象client = new PreBuiltTransportClient(settings).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9301)).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9302)).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9303));}private void search(QueryBuilder queryBuilder) throws Exception {//3)使用client执行查询SearchResponse searchResponse = client.prepareSearch("index_hello").setTypes("article").setQuery(queryBuilder).get();//4)得到查询的结果SearchHits searchHits = searchResponse.getHits();//5)取查询结果的总记录数System.out.println("查询结果总记录数:" + searchHits.getTotalHits());//6)取查询结果列表Iterator<SearchHit> iterator = searchHits.iterator();while (iterator.hasNext()) {SearchHit searchHit = iterator.next();//打印文档对象,以json格式输出System.out.println(searchHit.getSourceAsString());//取文档的属性System.out.println("---------------文档的属性");Map<String, Object> document = searchHit.getSource();System.out.println(document.get("id"));System.out.println(document.get("title"));System.out.println(document.get("content"));}//7)关闭clientclient.close();}private void search(QueryBuilder queryBuilder, String highLightField) throws Exception {HighlightBuilder highlightBuilder = new HighlightBuilder();highlightBuilder.field(highLightField);//高亮显示的字段highlightBuilder.preTags("<em>");//前缀highlightBuilder.postTags("</em>");//后缀//3)使用client执行查询SearchResponse searchResponse = client.prepareSearch("index_hello").setTypes("article").setQuery(queryBuilder)//设置分页信息.setFrom(0)//起始行号从0开始.setSize(5)//每一页显示的行数//设置高亮信息.highlighter(highlightBuilder).get();//4)得到查询的结果SearchHits searchHits = searchResponse.getHits();//5)取查询结果的总记录数System.out.println("查询结果总记录数:" + searchHits.getTotalHits());//6)取查询结果列表Iterator<SearchHit> iterator = searchHits.iterator();while (iterator.hasNext()) {SearchHit searchHit = iterator.next();//打印文档对象,以json格式输出System.out.println(searchHit.getSourceAsString());//取文档的属性System.out.println("---------------文档的属性");Map<String, Object> document = searchHit.getSource();System.out.println(document.get("id"));System.out.println(document.get("title"));System.out.println(document.get("content"));System.out.println("****************************高亮结果");Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();System.out.println(highlightFields);}//7)关闭clientclient.close();}@Testpublic void testSearchById() throws Exception {//1)创建一个client对象//public void init() throws Exception {}//2)创建一个查询对象,可以使用QueryBuilders工具类创建QueryBuilder对象QueryBuilder queryBuilder = QueryBuilders.idsQuery().addIds("1", "2");search(queryBuilder);/*//3)使用client执行查询SearchResponse searchResponse = client.prepareSearch("index_hello").setTypes("article").setQuery(queryBuilder).get();//4)得到查询的结果SearchHits searchHits = searchResponse.getHits();//5)取查询结果的总记录数System.out.println("查询结果总记录数:" + searchHits.getTotalHits());//6)取查询结果列表Iterator<SearchHit> iterator = searchHits.iterator();while (iterator.hasNext()) {SearchHit searchHit = iterator.next();//打印文档对象,以json格式输出System.out.println(searchHit.getSourceAsString());//取文档的属性System.out.println("---------------文档的属性");Map<String, Object> document = searchHit.getSource();System.out.println(document.get("id"));System.out.println(document.get("title"));System.out.println(document.get("content"));}//7)关闭clientclient.close();*/}@Testpublic void testQueryByTerm() throws Exception {//创建一个QueryBuilder对象//参数1:要搜索的字段//参数2:要搜索的关键词TermQueryBuilder queryBuilder = QueryBuilders.termQuery("title", "爆炸");//执行查询search(queryBuilder);}@Testpublic void testQueryStringQuery() throws Exception {//创建一个QueryBuilder对象QueryBuilder queryBuilder = QueryBuilders.queryStringQuery("爆炸").defaultField("title");//执行查询search(queryBuilder, "title");}
}
xxx.xxx.var——快速生成变量。