黑猴子的家:Elasticsearch IK分词器的使用 API 操作

本文详细介绍了如何使用Elasticsearch进行全文检索,包括创建索引、定义mapping、插入文档及词条查询等核心操作,是初学者快速上手Elasticsearch的实用指南。

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

1、Code -> GitHub

https://github.com/liufengji/elasticsearch_api.git

2、创建索引

    //创建索引(数据库)
    @Test
    public void createIndex() {
        //创建索引
        client.admin().indices().prepareCreate("blog4").get();
        //关闭资源
        client.close();
    }

3、创建mapping

    //创建使用ik分词器的mapping
    @Test
    public void createMapping() throws Exception {

        // 1设置mapping
        XContentBuilder builder = XContentFactory.jsonBuilder()
                .startObject()
                    .startObject("article")
                        .startObject("properties")
                        .startObject("id1")
                            .field("type", "string")
                            .field("store", "yes")
                            .field("analyzer","ik_smart")
                        .endObject()
                        .startObject("title2")
                            .field("type", "string")
                            .field("store", "no")
                            .field("analyzer","ik_smart")
                        .endObject()
                        .startObject("content")
                            .field("type", "string")
                            .field("store", "yes")
                            .field("analyzer","ik_smart")
                        .endObject()
                        .endObject()
                    .endObject()
                .endObject();

        // 2 添加mapping
        PutMappingRequest mapping = Requests.putMappingRequest("blog4")
                .type("article").source(builder);

        client.admin().indices().putMapping(mapping).get();

        // 3 关闭资源
        client.close();
    }

4、插入数据

    //创建文档,以map形式
    @Test
    public void createDocumentByMap() {

        HashMap<String, String> map = new HashMap<>();
        map.put("id1", "2");
        map.put("title2", "Lucene");
        map.put("content", "它提供了一个分布式的web接口");

        IndexResponse response = client.prepareIndex("blog4", "article", "3")
                .setSource(map).execute().actionGet();

        //打印返回的结果
        System.out.println("结果:" + response.getResult());
        System.out.println("id:" + response.getId());
        System.out.println("index:" + response.getIndex());
        System.out.println("type:" + response.getType());
        System.out.println("版本:" + response.getVersion());

        //关闭资源
        client.close();
    }

5、词条查询

    //词条查询
    @Test
    public void queryTerm() {

        SearchResponse response = client.prepareSearch("blog4").setTypes("article")
                .setQuery(QueryBuilders.termQuery("content","提供")).get();

        //获取查询命中结果
        SearchHits hits = response.getHits();

        System.out.println("结果条数:" + hits.getTotalHits());

        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
      }
  }

6、结果查看

9193428-c6764bd85c915cd6.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值