Elasticsearch初步体验

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011930705/article/details/86623259

elasticsearch体验
// 1.创建client

TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
     .addTransportAddress(newInetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));

// 2.获取对索引进行操作的对象

IndicesAdminClient indicesAdminClient = client.admin().indices();

//3.创建索引,并且设置setting和mapping,可以使用

     XContentBuilder settings = XContentFactory.jsonBuilder().startObject()。。。。.endObject()的格式添加

CreateIndexResponse ciReponse = indicesAdminClient.prepareCreate("index")
                .setSettings(settings).addMapping("type",mapping).get();

//4.添加数据到索引中,不设id可以随机生成

BulkRequestBuilder bulkRequest = client.prepareBulk();
bulkRequest.add(client.prepareIndex("index", "type").setSource(source);
BulkResponse bulkResponse = bulkRequest.execute().actionGet();

//5.查询数据

//5.1查询遍历并且高亮显示函数

public void searchFunction(TransportClient client,QueryBuilder queryBuilder,String indexName) {
    HighlightBuilder highlightBuilder=new HighlightBuilder().field("*").requireFieldMatch(false);
    highlightBuilder.preTags("<em>");
    highlightBuilder.postTags("</em>");
    SearchResponse response = client.prepareSearch(indexName)
            .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
            .setQuery(queryBuilder)
            .highlighter(highlightBuilder)
            .setSize(10).execute().actionGet();
    
    while(true) {
        System.out.println("total search result :"+ response.getHits().totalHits);
        for (SearchHit hit : response.getHits()) { 
                //Iterator<Entry<String, Object>> iterator = hit
                //                        .getSource().entrySet().iterator();    
            	Iterator<Entry<String, HighlightField>> iterator = hit
                                      .getHighlightFields().entrySet().iterator();
                while(iterator.hasNext()) {
                    Entry<String, HighlightField> next = iterator.next();
                    System.out.println(next.getKey() + ": " + next.getValue());
                    if(response.getHits().hits().length == 0) {
                        break;
                    }
                }
        }
        break;
    }
}

//5.2 多个字段并集搜索

    public void FeildOrQuery(TransportClient client,String indexName,String field,String...doclist) {
        QueryBuilder queryBuilder = QueryBuilders.termsQuery(field, doclist); 
        searchFunction(client,queryBuilder,indexName);
    }

//5.3  多个字段交集搜索

    public void FeildAndQuery(TransportClient client,String indexName,String field,String...doclist) {
        BoolQueryBuilder bqueryBuilder= QueryBuilders.boolQuery();
        for(String doc : doclist) {
        	bqueryBuilder.must(QueryBuilders.termQuery(field, doc));
        }
        searchFunction(client,bqueryBuilder,indexName);
    }	

//5.4  模糊查询,用*匹配

	public void fuzzyQuery(TransportClient client,String indexName,String field,String doc) {
		QueryBuilder queryBuilder = QueryBuilders.wildcardQuery(field, doc);
		searchFunction(client,queryBuilder,indexName);
	}

猜你喜欢

转载自blog.csdn.net/u011930705/article/details/86623259
今日推荐