elasticsearch入门篇-学习笔记

elasticsearch入门篇-学习笔记

    • 介绍
    • 原理
    • 本地安装
    • Java API操作
    • 可直接通过postman增删改查,效果

介绍

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。

原理

Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式.如下:
在这里插入图片描述
Elasticsearch和传统关系型数据库对比如下:
关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns)
Elasticsearch ⇒ 索引(Index) ⇒ 类型(type) ⇒ 文档(Docments) ⇒ 字段(Fields)
Elasticsearch最关键的就是提供强大的索引能力,
如果我们插入这几条数据:

ID title content
1 咒术回战 打妖怪
2 钢之炼金术师 人体试炼
3 进击的巨人 打妖怪

Elasticsearch会建立这些索引:
title:

Term Posting List
咒术回战 1
钢之炼金术师 2
进击的巨人 3

content:

Term Posting List
打妖怪 [1,3]
人体试炼 2

Posting list就是一个int的数组,存储了所有符合某个term的文档id
直接通过内存读取term,不读取磁盘,但不是简单的讲所有的term放在内存
关于Lucene的词典FST深入剖析 这篇文章对索引原理讲的很清晰

本地安装

https://www.elastic.co/cn/elasticsearch/官网下载zip包.
注意最新版本需要jdk版本11,我使用的6.0.0版本对应jdk版本8
解压,点击bat文件
elasticsearch入门篇-学习笔记_第1张图片
elasticsearch入门篇-学习笔记_第2张图片
表示启动成功,在网页上可以通过http://localhost:9200/访问
elasticsearch入门篇-学习笔记_第3张图片

Java API操作

在idea创建工程,导入依赖:



    org.elasticsearch
    elasticsearch
    5.6.8


    org.elasticsearch.client
    transport
    5.6.8


    org.apache.logging.log4j
    log4j-to-slf4j
    2.9.1


    org.slf4j
    slf4j-api
    1.7.24


    org.slf4j
    slf4j-simple
    1.7.21


    log4j
    log4j
    1.2.12


    junit
    junit
    4.10



创建文档,搜索文档

创建文档:
@Test
public void createIndex() throws Exception {
    //1.创建es客户端对象
    TransportClient transportClient = new PreBuiltTransportClient(Settings.EMPTY)
            .addTransportAddress(new InetSocketTransportAddress(InetAddress
                    .getByName("127.0.0.1"), 9300));
    //2.创建文档内容
    XContentBuilder contentBuilder = XContentFactory.jsonBuilder()
            .startObject()
            .field("id", 1)
            .field("title", "elasticsearch是一个基于lucene的搜索服务")
            .field("content", "ElasticSearch是一个基于Lucene的搜索服务器。" +
                    "它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。" +
                    "Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布," +
                    "是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定," +
                    "可靠,快速,安装使用方便。")
            .endObject();
    //3.创建文档对象
    IndexResponse response = transportClient.prepareIndex("blog1", "article", "1")
            .setSource(contentBuilder)
            .get();
    Map map = new HashMap();
    map.put("id","2");
    map.put("title","这是一个基于lucene的搜索服务");
    map.put("content","这是一个基于Lucene的搜索服务器文件");
    //3.创建文档对象
    IndexResponse response2 = transportClient.prepareIndex("blog1", "article", "2")
            .setSource(map)
            .get();
    //获取返回的状态
    RestStatus status = response.status();
    System.out.println(status);
    //4.释放资源
    transportClient.close();
}

搜索所有的数据
    @Test
    public void searchAll() throws Exception{
        //1创建客户端对象
        TransportClient transportClient = new PreBuiltTransportClient(Settings.EMPTY).
                addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
        //2.构建搜索内容
        SearchResponse response = transportClient.prepareSearch("blog1").setTypes("article")
                .setQuery(QueryBuilders.matchAllQuery())
                .get();
 
 
        //获取搜索结果
        SearchHits hits = response.getHits();
        System.out.println(hits.getTotalHits());
        //遍历结果
        Iterator iterator = hits.iterator();
        for (SearchHit hit : hits) {
            System.out.println(hit.getSourceAsString());
        }
        //关闭资源
        transportClient.close();
    }

可直接通过postman增删改查,效果

put表示插入,修改
get请求表示查询,
delete请求表示删除
插入:
elasticsearch入门篇-学习笔记_第4张图片
查询:
elasticsearch入门篇-学习笔记_第5张图片
根据条件查询:
elasticsearch入门篇-学习笔记_第6张图片
删除:
elasticsearch入门篇-学习笔记_第7张图片
啾咪啾咪

你可能感兴趣的:(elasticsearch,java)