Elasticsearch简单操作(Java代码)

1.首先安装Elasticsearch,配置相关文件,并启动服务

2.创建项目,导入相关Jar包

3.创建ElasticsearchUtils类,里面包括初始化操作和创建索引、更新索引、删除索引、查询索引

(1)初始化操作,需要传入集群名称和ip地址,集群名称本例子使用elasticsearch配置文件中配置的cluster name,IP地址使用localhost

public class ElasticsearchUtils {

    private Client client;

    public ElasticsearchUtils(String clusterName, String ipAddress) {
        Settings settings = ImmutableSettings
                .settingsBuilder()
                //设置集群名称 
                .put("cluster.name", clusterName)
                .put("client.transport.ignore_cluster_name", false)
                .put("node.client", true).put("client.transport.sniff", true)
                .build();
        client = new TransportClient(settings)
                .addTransportAddress(new InetSocketTransportAddress(ipAddress,
                        9300));//此处端口号为9300
    }
}


(2)创建索引

/**
     * 创建索引
     * @param indexName 索引名称,相当于数据库名称
     * @param typeName 索引类型,相当于数据库中的表名
     * @param id id名称,相当于每个表中某一行记录的标识
     * @param jsonData json数据
     */
    public void createIndex(String indexName, String typeName, String id,
            String jsonData) {
        IndexRequestBuilder requestBuilder = client.prepareIndex(indexName,
            typeName, id).setRefresh(true);//设置索引名称,索引类型,id
        requestBuilder.setSource(jsonData).execute().actionGet();//创建索引
    }


(3)查询索引

 /**
     * 执行搜索
     * @param indexname 索引名称
     * @param type 索引类型
     * @param queryBuilder 查询条件
     * @return
     */
    public SearchResponse searcher(String indexName, String typeName,
            QueryBuilder queryBuilder) {
        SearchResponse searchResponse = client.prepareSearch(indexName)
                .setTypes(typeName).setQuery(queryBuilder).execute()
                .actionGet();//执行查询
        return searchResponse;
    }

(4)更新索引

 /**
     * 更新索引
     * @param indexName 索引名称
     * @param typeName 索引类型
     * @param id id名称
     * @param jsonData json数据
     */
    public void updateIndex(String indexName, String typeName, String id,
            String jsonData) {
        UpdateRequest updateRequest = new UpdateRequest();
        updateRequest.index(indexName);//设置索引名称
        updateRequest.id(id);//设置id
        updateRequest.type(typeName);//设置索引类型
        updateRequest.doc(jsonData);//更新数据
        client.update(updateRequest).actionGet();//执行更新
    }

(5)删除索引

 /**
     * 删除索引
     * @param indexName
     * @param typeName
     * @param id
     */
    public void deleteIndex(String indexName, String typeName, String id) {
        client.prepareDelete(indexName, typeName, id).get();
    }


4.创建测试类

package com.elasticsearch.test;

import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;

public class Test {
    public static void main(String[] args) {
        //创建对象,设置集群名称和IP地址
        ElasticsearchUtils es = new ElasticsearchUtils("im_shan",
                "localhost");
        String indexName = "school";//索引名称
        String typeName = "student";//类型名称
        String id = "1";
        String jsonData = "{" + "\"name\":\"kimchy\","
                + "\"birth\":\"1995-01-30\"," + "\"email\":\"kimchy@163.com\""
                + "}";//json数据
        //1.创建索引(ID可自定义也可以自动创建,此处使用自定义ID)
        es.createIndex(indexName, typeName, id, jsonData);

        //2.执行查询
        //(1)创建查询条件
        QueryBuilder queryBuilder = QueryBuilders.termQuery("name", "kimchy");//搜索name为kimchy的数据
        //(2)执行查询
        SearchResponse searchResponse = es.searcher(indexName, typeName,
            queryBuilder);
        //(3)解析结果
        SearchHits hits = searchResponse.getHits();
        SearchHit[] searchHits = hits.getHits();
        for (SearchHit searchHit : searchHits) {
            String name = (String) searchHit.getSource().get("name");
            String birth = (String) searchHit.getSource().get("birth");
            String email = (String) searchHit.getSource().get("email");
            System.out.println(name);
            System.out.println(birth);
            System.out.println(email);
        }

        //3.更新数据
        jsonData = "{" + "\"name\":\"jack\"," + "\"birth\":\"1996-01-30\","
                + "\"email\":\"jack@163.com\"" + "}";//json数据
        es.updateIndex(indexName, typeName, id, jsonData);

        //4.删除数据
        es.deleteIndex(indexName, typeName, id);
    }
}

1.创建索引之后,可以在浏览器输入 http:// localhost:9200/_plugin/head / 进行查看,可以发现索引已创建,index名称为school,type为student,id为1


2.查询索引,控制台会输出name为kimchy的birth、email的值

3.更新索引,此时再次进入http://localhost:9200/_plugin/head/ 进行查看,发现内容已经改变



4.删除索引,代码执行后输入http://localhost:9200/_plugin/head/ 查看,内容已清空




参考:http://www.tuicool.com/articles/R7RVJb

官方Java API:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html


源码下载:http://download.csdn.net/detail/lom9357bye/9656269

Spring Boot是一个开箱即用的框架,可以简化Java应用程序的开发。而Elasticsearch是一个开源的搜索引擎,具有强大的全文搜索和分析能力。 要在Spring Boot中操作Elasticsearch,首先需要在项目的依赖管理中增加Elasticsearch的相关依赖,例如elasticsearch和spring-boot-starter-data-elasticsearch。 在配置文件(application.properties或application.yml)中,需要设置Elasticsearch的连接信息,如主机名、端口号和索引名称等。可以通过spring.data.elasticsearch.cluster-nodes和spring.data.elasticsearch.cluster-name属性来进行配置。 接下来,在Java代码中,可以使用Spring Data Elasticsearch提供的API来进行操作。可以通过注解方式定义实体类和索引,使用ElasticsearchRepository来实现数据的增删改查操作。 通过ElasticsearchRepository的save方法可以将数据保存到Elasticsearch中。通过findById方法可以根据ID查询数据,通过search方法可以进行全文搜索等。 在使用Elasticsearch的时候,还可以进行索引的创建和删除操作。可以使用IndicesAdminClient提供的API来调用创建和删除索引的操作。 此外,Elasticsearch还提供了丰富的搜索功能,如分页查询、排序查询、聚合查询等。可以通过QueryBuilder和SearchRequestBuilder等类来构建复杂的查询语句。 总之,Spring Boot和Elasticsearch的结合可以提供一个简便而强大的搜索引擎应用程序开发框架。开发人员可以通过简单的配置和API调用来实现数据的存储、检索和分析功能,大大简化了开发过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值