1、数据准备
首先创建book索引
PUT /book/ { "settings": { "number_of_shards": 1, "number_of_replicas": 0 }, "mappings": { "properties": { "name": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_smart" }, "description": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_smart" }, "studymodel": { "type": "keyword" }, "price": { "type": "double" }, "timestamp": { "type": "date", "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" }, "pic": { "type": "text", "index": false } } } }
添加测试数据
PUT /book/_doc/1 { "name": "Bootstrap开发", "description": "Bootstrap是一个非常流行的开发框架。此开发框架可以帮助不擅长css页面开发的程序人员轻松的实现一个css,不受浏览器限制的精美界面css效果。", "studymodel": "201002", "price": 38.6, "timestamp": "2019-08-25 19:11:35", "pic": "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg", "tags": [ "bootstrap", "dev" ] } PUT /book/_doc/2 { "name": "java编程思想", "description": "java语言是世界第一编程语言,在软件开发领域使用人数最多。", "studymodel": "201001", "price": 68.6, "timestamp": "2019-08-25 19:11:35", "pic": "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg", "tags": [ "java", "dev" ] } PUT /book/_doc/3 { "name": "spring开发基础", "description": "spring 在java领域非常流行,java程序员都在用。", "studymodel": "201001", "price": 88.6, "timestamp": "2019-08-24 19:11:35", "pic": "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg", "tags": [ "spring", "java" ] }
2、match_all搜索
match_all用来搜索全部记录,先回顾下语法
GET /book/_search { "query": { "match_all": {} } }
返回
{ "took" : 0, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 3, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "book", "_type" : "_doc", "_id" : "1", "_score" : 1.0, "_source" : { "name" : "Bootstrap开发", "description" : "Bootstrap是一个非常流行的开发框架。此开发框架可以帮助不擅长css页面开发的程序人员轻松的实现一个css,不受浏览器限制的精美界面css效果。", "studymodel" : "201002", "price" : 38.6, "timestamp" : "2019-08-25 19:11:35", "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg", "tags" : [ "bootstrap", "dev" ] } }, { "_index" : "book", "_type" : "_doc", "_id" : "2", "_score" : 1.0, "_source" : { "name" : "java编程思想", "description" : "java语言是世界第一编程语言,在软件开发领域使用人数最多。", "studymodel" : "201001", "price" : 68.6, "timestamp" : "2019-08-25 19:11:35", "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg", "tags" : [ "java", "dev" ] } }, { "_index" : "book", "_type" : "_doc", "_id" : "3", "_score" : 1.0, "_source" : { "name" : "spring开发基础", "description" : "spring 在java领域非常流行,java程序员都在用。", "studymodel" : "201001", "price" : 88.6, "timestamp" : "2019-08-24 19:11:35", "pic" : "group1/M00/00/00/wKhlQFs6RCeAY0pHAAJx5ZjNDEM428.jpg", "tags" : [ "spring", "java" ] } } ] } }
Java代码
@Test public void testSearchAll() throws IOException { //1构建搜索请求 SearchRequest searchRequest = new SearchRequest("book"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.matchAllQuery()); //获取某些字段 // searchSourceBuilder.fetchSource(new String[]{"name"}, new String[]{}); searchRequest.source(searchSourceBuilder); //2执行搜索 SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); //3获取结果 SearchHits hits = searchResponse.getHits(); //数据数据 SearchHit[] searchHits = hits.getHits(); System.out.println("--------------------------"); for (SearchHit hit : searchHits) { String id = hit.getId(); float score = hit.getScore(); Map<String, Object> sourceAsMap = hit.getSourceAsMap(); String name = (String) sourceAsMap.get("name"); String description = (String) sourceAsMap.get("description"); Double price = (Double) sourceAsMap.get("price"); System.out.println("name:" + name); System.out.println("description:" + description); System.out.println("price:" + price); System.out.println("=========================="); } }
返回结果
3、IDs搜索
IDs用来搜索指定id的记录,先回顾下语法
GET /book/_search { "query": { "ids": { "values": [1,4,100] } } }
只有id为1才存在数据,id为4&