十三、 ELASTICSEARCH JAVAAPI-查询操作


TestElasticSearch4J

 
根据关键字进行分页查询
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
package  com.how2java;
 
import  java.io.IOException;
import  java.util.HashMap;
import  java.util.List;
import  java.util.Map;
 
import  org.apache.http.HttpHost;
import  org.elasticsearch.ElasticsearchStatusException;
import  org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import  org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import  org.elasticsearch.action.admin.indices.open.OpenIndexRequest;
import  org.elasticsearch.action.bulk.BulkRequest;
import  org.elasticsearch.action.delete.DeleteRequest;
import  org.elasticsearch.action.get.GetRequest;
import  org.elasticsearch.action.get.GetResponse;
import  org.elasticsearch.action.index.IndexRequest;
import  org.elasticsearch.action.search.SearchRequest;
import  org.elasticsearch.action.search.SearchResponse;
import  org.elasticsearch.action.update.UpdateRequest;
import  org.elasticsearch.client.RestClient;
import  org.elasticsearch.client.RestHighLevelClient;
import  org.elasticsearch.common.unit.Fuzziness;
import  org.elasticsearch.index.query.MatchQueryBuilder;
import  org.elasticsearch.search.SearchHit;
import  org.elasticsearch.search.SearchHits;
import  org.elasticsearch.search.builder.SearchSourceBuilder;
import  org.elasticsearch.search.sort.ScoreSortBuilder;
import  org.elasticsearch.search.sort.SortOrder;
 
public  class  TestElasticSearch4J {
     private  static  RestHighLevelClient client =  new  RestHighLevelClient(
             RestClient.builder(
                     new  HttpHost( "localhost" 9200 "http" )
             ));
     private  static  String indexName =  "how2java" ;
     
     public  static  void  main(String[] args)  throws  IOException {
         
         String keyword =  "时尚连衣裙" ;
         int  start =  0 ;
         int  count =  10 ;
         
         SearchHits hits = search(keyword, start, count);
         
         SearchHit[] searchHits = hits.getHits();
         for  (SearchHit hit : searchHits) {
 
             System.out.println(hit.getSourceAsString());
         }
         
         client.close();
 
     }
 
     private  static  SearchHits search(String keyword,  int  start,  int  count)  throws  IOException {
         SearchRequest searchRequest =  new  SearchRequest(indexName);
         
         SearchSourceBuilder sourceBuilder =  new  SearchSourceBuilder();
         //关键字匹配
         MatchQueryBuilder matchQueryBuilder =  new  MatchQueryBuilder( "name" ,keyword );
         //模糊匹配
         matchQueryBuilder.fuzziness(Fuzziness.AUTO);
         sourceBuilder.query(matchQueryBuilder);
         //第几页
         sourceBuilder.from(start);
         //第几条
         sourceBuilder.size(count);
 
         searchRequest.source(sourceBuilder);
         //匹配度从高到低
         sourceBuilder.sort( new  ScoreSortBuilder().order(SortOrder.DESC));
         
         SearchResponse searchResponse = client.search(searchRequest);
         
         SearchHits hits = searchResponse.getHits();
         return  hits;
     }
 
     private  static  void  batchInsert(List<Product> products)  throws  IOException {
         // TODO Auto-generated method stub
         BulkRequest request =  new  BulkRequest();
         
         for  (Product product : products) {
             Map<String,Object> m  = product.toMap();
             IndexRequest indexRequest=  new  IndexRequest(indexName,  "product" , String.valueOf(product.getId())).source(m);
             request.add(indexRequest);
         }
         
         client.bulk(request);
         System.out.println( "批量插入完成" );
     }
 
     private  static  void  deleteDocument( int  id)  throws  IOException {
         DeleteRequest  deleteRequest =  new  DeleteRequest (indexName, "product" , String.valueOf(id));
         client.delete(deleteRequest);
         System.out.println( "已经从ElasticSearch服务器上删除id=" +id+ "的文档" );
     }
 
     private  static  void  updateDocument(Product product)  throws  IOException {
     
         UpdateRequest  updateRequest =  new  UpdateRequest (indexName,  "product" , String.valueOf(product.getId()))
                 .doc( "name" ,product.getName());
                 
         client.update(updateRequest);
         System.out.println( "已经在ElasticSearch服务器修改产品为:" +product);
         
     }
 
     private  static  void  getDocument( int  id)  throws  IOException {
         // TODO Auto-generated method stub
         GetRequest request =  new  GetRequest(
                 indexName,
                 "product"
                 String.valueOf(id));
         
         GetResponse response = client.get(request);
         
         if (!response.isExists()){
             System.out.println( "检查到服务器上 " + "id=" +id+  "的文档不存在" );
         }
         else {
             String source = response.getSourceAsString();
             System.out.print( "获取到服务器上 " + "id=" +id+  "的文档内容是:" );
 
             System.out.println(source);
             
         }
         
     }
 
     private  static  void  addDocument(Product product)  throws  IOException {
         Map<String, Object> jsonMap =  new  HashMap<>();
         jsonMap.put( "name" , product.getName());
         IndexRequest indexRequest =  new  IndexRequest(indexName,  "product" , String.valueOf(product.getId()))
                 .source(jsonMap);
         client.index(indexRequest);
         System.out.println( "已经向ElasticSearch服务器增加产品:" +product);
     }
 
     private  static  boolean  checkExistIndex(String indexName)  throws  IOException {
         boolean  result = true ;
         try  {
 
             OpenIndexRequest openIndexRequest =  new  OpenIndexRequest(indexName);
             client.indices().open(openIndexRequest).isAcknowledged();
 
         catch  (ElasticsearchStatusException ex) {
             String m =  "Elasticsearch exception [type=index_not_found_exception, reason=no such index]" ;
             if  (m.equals(ex.getMessage())) {
                 result =  false ;
             }
         }
         if (result)
             System.out.println( "索引:"  +indexName +  " 是存在的" );
         else
             System.out.println( "索引:"  +indexName +  " 不存在" );
         
         return  result;
         
     }
 
     private  static  void  deleteIndex(String indexName)  throws  IOException {
         DeleteIndexRequest request =  new  DeleteIndexRequest(indexName);
         client.indices().delete(request);
         System.out.println( "删除了索引:" +indexName);
 
     }
 
     private  static  void  createIndex(String indexName)  throws  IOException {
         // TODO Auto-generated method stub
         CreateIndexRequest request =  new  CreateIndexRequest(indexName);
         client.indices().create(request);
         System.out.println( "创建了索引:" +indexName);
     }
      
}

 


先运行,看到效果,再学习

下载地址:http://download.how2j.cn/1704/elasticsearch4j.rar


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM