ElasticSearch --- JAVA简单使用

本文档详细介绍了如何在Java应用中使用ElasticSearch,包括引入依赖、创建文档实体、建立索引、各种查询方式(如matchAllQuery、queryStringQuery、wildcardQuery、termQuery)、操作索引(创建、删除)、映射创建、文档增删改查、分页搜索、高亮显示等核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、引入ElasticSearch的jar

<dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>2.4.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.8.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.8.1</version>
        </dependency>



二、创建文档类型实体Bean

package cn.elasticsearch.domain;

public class Article {
	private Integer id;
	private String title;
	private String content;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	@Override
	public String toString() {
		return "Article [id=" + id + ", title=" + title + ", content="
				+ content + "]";
	}

}



三、ElasticSearch中建立文档,自动创建索引

// 直接在ElasticSearch中建立文档,自动创建索引
    @Test
    public void demo1() throws IOException {
        // 创建ElasticSearch连接对象
        Client client = getElasticSearchClient();

        // 创建对象要添加对象的JSON格式字符串
        XContentBuilder builder = XContentFactory.jsonBuilder().startObject()
                .field("1", 1)
                .field("title", "ElasticSearch是一个基于Lucene的搜索服务器")
                .field("content", "它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。")
                .endObject();

        // 建立文档对象
        client.prepareIndex("blog1", "article", "1").setSource(builder).get();

        // 关闭连接
        client.close();
    }


四、QueryBuilders.matchAllQuery() 查询所有

// 搜索在ElasticSearch中创建的文档对象,使用QueryBuilders.matchAllQuery()查询所有
    @Test
    public void demo2() throws UnknownHostException {
        // 创建ElasticSearch连接对象
        Client client = getElasticSearchClient();

        // 手册数据
        SearchResponse searchResponse = client
                .prepareSearch("blog1")
                .setTypes("article")
                .setQuery(QueryBuilders.matchAllQuery()).get();

        printSearchResponse(searchResponse);

        // 关闭连接
        client.close();
    }


五、QueryBuilders.queryStringQuery() 分词内容查询

// 使用QueryBuilders.queryStringQuery(搜索内容)进行分词内容查询
    @Test
    public void demo3() throws UnknownHostException {
        // 创建ElasticSearch连接对象
        Client client = getElasticSearchClient();

        // 搜索数据
        SearchResponse searchResponse = client
                .prepareSearch("blog1")
                .setTypes("article")
                .setQuery(QueryBuilders.queryStringQuery("全文")).get();

        printSearchResponse(searchResponse);

        // 关闭连接
        client.close();
    }


六、QueryBuilders.wildcardQuery() 范围分词模糊查询

    // 使用QueryBuilders.wildcardQuery("搜索范围:如title|content","查询内容")进行范围分词模糊查询
    // *表示任意字符串     ?表示任意字符
    // 查询结果为0条,说明没有词条包含"全文"
    @Test
    public void demo4() throws UnknownHostException {
        // 创建ElasticSearch连接对象
        Client client = getElasticSearchClient();

        // 搜索数据
        SearchResponse searchResponse = client
                .prepareSearch("blog1")
                .setTypes("article")
                .setQuery(QueryBuilders.wildcardQuery("content", "*全文*")).get();

        printSearchResponse(searc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值