搜索引擎elasticsearch(四)-- 使用java进行数据操作

一、简介

在前面文章中,介绍了使用http对elasticsearch进行数据操作,这里将介绍在java中,使用elasticsearch

的java客户端进行数据操作。 这里使用的es版本为6.2.2。

二、步骤

1、添加maven依赖

<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>6.2.2</version>
</dependency>
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>transport</artifactId>
    <version>6.2.2</version>
</dependency>

2、在java中es数据操作,这里直接上代码,详情请查看注释。

import com.alibaba.fastjson.JSONObject;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.sort.SortOrder;
import org.elasticsearch.transport.client.PreBuiltTransportClient;

import java.net.InetAddress;
import java.util.Arrays;
import java.util.Map;

public class ElasticSearchPaperMain {

    public static void main(String[] args) throws Exception {
        //指定cluster.name
        Settings settings = Settings.builder().put("cluster.name", "my-application")
                .put("client.transport.sniff", true)
                .build();
        //创建客户端,注意java端口默认为9300
        Client client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.0.107"), 9300));


        //新建
        IndexResponse response = client.prepareIndex("stu", "doc","1")
                .setSource(
                        XContentFactory.jsonBuilder()
                                .startObject()
                                .field("stu_id", "001")
                                .field("stu_name", "apple1")
                                .endObject()
                ).get();
        System.out.println(response.toString());

        //更新
        JSONObject obj = new JSONObject();
        obj.put("stu_name", "banana");
        UpdateResponse updateResponse = client.prepareUpdate("stu", "doc", "1")
                .setDoc(obj.toJSONString(), XContentType.JSON).get();
        System.out.println(updateResponse);


        //删除
        DeleteResponse deleteResponse = client.prepareDelete("stu","doc","1").execute().actionGet();
        System.out.println(deleteResponse);

        //单个查询
        GetResponse getResponse = client.prepareGet("stu", "doc","1").execute().actionGet();
        System.out.println(getResponse);

        //精确查询
        QueryBuilder queryBuilder = QueryBuilders.disMaxQuery()
                .add(QueryBuilders.termQuery("stu_name", "apple1"));
        SearchResponse searchResponse = client.prepareSearch("stu").setQuery(queryBuilder).execute().actionGet();

        //模糊查询
        queryBuilder = QueryBuilders.wildcardQuery("stu_name", "apple*");
        searchResponse = client.prepareSearch("stu").setQuery(queryBuilder).execute().actionGet();
        System.out.println(searchResponse);

        //查询所有
        searchResponse = client.prepareSearch("stu").execute().actionGet();
        System.out.println(searchResponse);
        
        //分页查询
        searchResponse = client.prepareSearch("stu").addSort("_score", SortOrder.DESC).setFrom(2).setSize(2).execute().actionGet();
        System.out.println(searchResponse);
        
        Arrays.stream(searchResponse.getHits().getHits()).forEach(t->{
            Map<String, Object> m = t.getSourceAsMap();
            String stuId = (String) m.get("stu_id");
            String stuName = (String) m.get("stu_name");
            System.out.println(stuId+"   "+stuName);
        });
    }
}


猜你喜欢

转载自blog.csdn.net/chinabestchina/article/details/80739530