仿站多少钱,竹子建站模板怎么下载,怀化优化营商环境,滁州网站建设联系方式2019独角兽企业重金招聘Python工程师标准 前言#xff1a;elasticsearch虽然自带rest接口#xff0c;但是在真正使用过程中可能更多的是通过不同编程语言的客户端进行交互。 因为代码里有或多或少的注释#xff0c;所以直接贴代码#xff1a; package elasti… 2019独角兽企业重金招聘Python工程师标准 前言elasticsearch虽然自带rest接口但是在真正使用过程中可能更多的是通过不同编程语言的客户端进行交互。 因为代码里有或多或少的注释所以直接贴代码 package elasticsearcha;import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import entity.User;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.get.MultiGetItemResponse;
import org.elasticsearch.action.get.MultiGetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.MultiSearchResponse;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.junit.Test;
import java.net.InetAddress;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;/*** Created by wangnian on 2016/5/29.*/
public class EsTest {Client client getClient(192.168.1.55);//创建客户端public Client getClient(String host) {try {Client client TransportClient.builder().build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host), 9300));return client;} catch (Exception ex) {System.out.println(ex);}return null;}/*** 将对象通过jackson.databind转换成byte[]* 注意一下date类型需要格式化处理 默认是 时间戳** return*/public byte[] convertByteArray(Object obj) {ObjectMapper mapper new ObjectMapper(); // create once, reusetry {byte[] json mapper.writeValueAsBytes(obj);return json;} catch (JsonProcessingException e) {e.printStackTrace();}return null;}/*** 将对象通过JSONtoString转换成JSON字符串* 使用fastjson 格式化注解 在属性上加入 JSONField(formatyyyy-MM-dd HH:mm:ss)** return*/public String jsonStr(Object obj) {return JSON.toJSONString(obj);}/*** 增删改查** throws Exception*/Testpublic void test() throws Exception {MapString, Object json new HashMapString, Object();json.put(name, wangnian11);json.put(postDate, new Date());json.put(message, trying out Elasticsearch);User user new User();user.setId(2);user.setName(更新第一条);user.setPostDate(new Date());user.setMessage(这是一个测试的数据);IndexResponse response client.prepareIndex(index, user, user.getId().toString())//参数说明 索引类型 _id.setSource(jsonStr(user))//setSource可以传以上map string byte[] 几种方式.get();boolean created response.isCreated();System.out.println(创建一条记录: created);//删除_id为1的类型DeleteResponse response2 client.prepareDelete(index, user, 2).get();System.out.println(删除一条数据 response2.isFound());//更新UpdateResponse updateResponse client.prepareUpdate(index, user, 1).setDoc(jsonBuilder().startObject().field(name, 王念).endObject()).get();System.out.println(更新一条数据: updateResponse.isCreated());//获取_id为1的类型GetResponse response1 client.prepareGet(index, user, 1).get();response1.getSourceAsMap();//获取值转换成mapSystem.out.println(查询一条数据: JSON.toJSON(response1.getSourceAsMap()));}Testpublic void test2() {//查询多个id的值MultiGetResponse multiGetItemResponses client.prepareMultiGet().add(index, user, 1).add(index, user, 2, 3, 4).get();for (MultiGetItemResponse itemResponse : multiGetItemResponses) {GetResponse response itemResponse.getResponse();if (response.isExists()) {String json response.getSourceAsString();System.out.println(json);}}//搜索SearchResponse response client.prepareSearch(index)//可以同时搜索多个索引prepareSearch(index,index2).setTypes(user)//可以同时搜索多个类型.setSearchType(SearchType.DFS_QUERY_THEN_FETCH).setQuery(QueryBuilders.termQuery(name, 张三)) // Query.setPostFilter(QueryBuilders.rangeQuery(age).from(12).to(18)) // Filter.setFrom(0).setSize(2).setExplain(true).execute().actionGet();forSearchResponse(response);System.out.println(总共查询到有 response.getHits().getTotalHits());//多查询结果SearchRequestBuilder srb1 client.prepareSearch().setQuery(QueryBuilders.queryStringQuery(张三)).setSize(1);SearchRequestBuilder srb2 client.prepareSearch().setQuery(QueryBuilders.matchQuery(name, 张三)).setSize(1);MultiSearchResponse sr client.prepareMultiSearch().add(srb1).add(srb2).execute().actionGet();long nbHits 0;for (MultiSearchResponse.Item item : sr.getResponses()) {SearchResponse response1 item.getResponse();forSearchResponse(response1);nbHits response1.getHits().getTotalHits();}System.out.println(多查询总共查询到有 nbHits);}public void forSearchResponse(SearchResponse response) {for (SearchHit hit1 : response.getHits()) {MapString, Object source1 hit1.getSource();if (!source1.isEmpty()) {for (IteratorMap.EntryString, Object it source1.entrySet().iterator(); it.hasNext(); ) {Map.EntryString, Object entry it.next();System.out.println(entry.getKey() entry.getValue());}}}}
} 博客地址http://my.oschina.net/wangnian 转载于:https://my.oschina.net/wangnian/blog/684686