ava操作Elasticsearch
上面用到的核心类:
TransportClient
上面是索引库的位置 和 类型
求索引总数:
批量操作:
今天呢,发一篇JAVA操作ES搜索引擎的代码吧!
创建工程就不说了
Maven工程:加入Maven依赖!!!
pom.xml
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.elasticsearch</groupId>
- <artifactId>elasticsearch</artifactId>
- <version>1.4.4</version>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.1.3</version>
- </dependency>
JUnit测试首先连接:
- /**
- * Title: testConnection
- * Description: 测试连接
- */
- TransportClient client = null;
- @Before
- public void connection(){
- //设置一些属性
- //Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name","elasticsearch").build();
- // 获取一个客户端对象
- client = new TransportClient();//new TransportClient(settings);
- // 指定连接的Es节点Ip和端口 端口默认使用 9300
- TransportAddress transportAddress = new InetSocketTransportAddress("cloudera",9300);
- client.addTransportAddress(transportAddress);
- // 获取客户端 连接上的节点信息
- ImmutableList<DiscoveryNode> nodes = client.connectedNodes();
- for (DiscoveryNode discoveryNode : nodes) {
- System.out.println(discoveryNode.getHostAddress()+"\t"+discoveryNode.getHostName());
- }
- }
定义两个常量 方便之后的操作:
- private final static String INDEX = "test";
- private final static String TYPE = "emp";
上面是索引库的位置 和 类型
创建索引:有4种方法 下面给出代码
- /**
- *
- * Title: creatIndex1
- * Description:创建索引___JSON
- */
- @Test
- public void creatIndex1() {
- String jsonstr = "{\"name\":\"Baby\",\"address\":\"jx\",\"age\":23}";
- IndexResponse response = client.prepareIndex(INDEX, TYPE, "3")//
- .setSource(jsonstr).execute()//
- .actionGet();
- System.out.println(response.getId());
- }
- /**
- *
- * Title: creatIndex2
- * Description:创建索引___Map
- */
- @Test
- public void creatIndex2() {
- Map<String, Object> source = new HashMap<String, Object>();
- source.put("name", "ww");
- source.put("age", 20);
- source.put("address", "SH");
- IndexResponse response = client.prepareIndex(INDEX, TYPE)//
- .setSource(source).execute()//
- .actionGet();
- System.out.println(response.getId());
- }
- /**
- *
- * Title: creatIndex3
- * Description:创建索引___Bean-->工具类转JSON
- * @throws JsonProcessingException
- */
- @Test
- public void creatIndex3() throws Exception {
- Person person = new Person();
- person.setName("JSQ");
- person.setAge(21);
- person.setAddress("JL");
- ObjectMapper mapper = new ObjectMapper();
- IndexResponse response = client.prepareIndex(INDEX, TYPE)//
- .setSource(mapper.writeValueAsString(person)).execute()//
- .actionGet();
- System.out.println(response.getId());
- }
- /**
- *
- * Title: creatIndex4
- * Description:创建索引___工具类 XContentBuilder
- * @throws JsonProcessingException
- */
- @Test
- public void creatIndex4() throws Exception {
- XContentBuilder builder = XContentFactory.jsonBuilder()//
- .startObject()// {
- .field("name", "test")// "name":"test"
- .field("age", 31)//
- .endObject();// }
- IndexResponse response = client.prepareIndex(INDEX, TYPE)//
- .setSource(builder).execute()//
- .actionGet();
- System.out.println(response.getId());
- }
根据ID读取索引
- /**
- *
- * Title: getIndex
- * Description:查詢
- */
- @Test
- public void getIndexByID(){
- GetResponse get = client.prepareGet(INDEX, TYPE, "1").execute().actionGet();
- System.out.println(get.getSourceAsString());
- }
更新操作:
- /**
- *
- * Title: getIndex
- * Description:更新1
- * @throws IOException
- */
- @Test
- public void Update() throws Exception {
- XContentBuilder builder = XContentFactory.jsonBuilder()//
- .startObject()// {
- .field("name", "qwer")// "name":"test"
- .field("age", 16)//
- .endObject();// }
- UpdateResponse response = client.prepareUpdate(INDEX, TYPE, "AVZ_sjFPSKhvuiHi4K8Z").setDoc(builder).execute().actionGet();
- System.out.println(response.getVersion());
- }
- /**
- *
- * Title: getIndex
- * Description:更新2
- *
- * @throws Exception
- */
- @Test
- public void Update2() throws Exception {
- UpdateRequest request = new UpdateRequest(INDEX, TYPE, "AVZ_sjG3SKhvuiHi4K8a");
- request.doc(XContentFactory.jsonBuilder().startObject().field("age", 18).endObject());
- UpdateResponse response = client.update(request).get();
- System.out.println(response.getVersion());
- }
- /**
- *
- * Title: UpdateOrCreate
- * Description: 更新或者插入
- * @throws Exception
- */
- @Test
- public void UpdateOrCreate() throws Exception {
- UpdateRequest request = new UpdateRequest(INDEX, TYPE, "4");
- XContentBuilder builder = XContentFactory.jsonBuilder()//
- .startObject()// {
- .field("name", "adfg")// "name":"test"
- .field("age", 66)//
- .endObject();// }
- request.doc(builder);
- request.upsert(builder);
- UpdateResponse response = client.update(request).get();
- System.out.println(response.getVersion());
- }
- /**
- *
- * Title: UpdateOrCreate
- * Description: 删除1
- * @throws Exception
- */
- @Test
- public void delete() throws Exception {
- DeleteRequest request = new DeleteRequest(INDEX, TYPE, "AVZ9SoaeqXbhzyjETmWC");
- DeleteResponse response = client.delete(request ).get();
- System.out.println("版本:"+response.getVersion());
- }
- /**
- *
- * Title: UpdateOrCreate
- * Description: 删除2
- * @throws Exception
- */
- @Test
- public void delete2() throws Exception {
- DeleteResponse response = client.prepareDelete(INDEX, TYPE, "1").execute().actionGet();
- System.out.println("版本:"+response.getVersion());
- }
求索引总数:
- /**
- *
- * Title: QueryCount
- * Description: 求总数
- * @throws Exception
- */
- @Test
- public void QueryCount() throws Exception {
- long l = client.prepareCount(INDEX).execute().get().getCount();
- System.out.println("总数:"+l);
- }
批量操作:
- /**
- *
- * Title: testBulk
- * Description:批量操作
- */
- @Test
- public void testBulk(){
- BulkRequestBuilder bulk = client.prepareBulk();
- //创建索引
- IndexRequest request1 = new IndexRequest(INDEX, TYPE, "101");
- request1.source("{\"name\":\"test101\",\"age\":101}");
- IndexRequest request2 = new IndexRequest(INDEX, TYPE, "102");
- request2.source("{\"name\":\"test102\",\"age\":102}");
- //删除索引
- DeleteRequest request3 = new DeleteRequest(INDEX, TYPE, "2");
- bulk.add(request1);
- bulk.add(request2);
- bulk.add(request3);
- BulkResponse response = bulk.execute().actionGet();
- if(response.hasFailures()){
- System.out.println("发生错误");
- }else{
- System.out.println("全部执行成功");
- }
- }