ElasticSearch入门

简介

Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎,拥有强大的数据检索分析能力。
ES使用JSON作为文档的序列化格式。JSON 序列化为大多数编程语言所支持,并且已经成为 NoSQL 领域的标准格式。 它简单、简洁、易于阅读。
所以说ES数据中的“字段”更为灵活。同一索引->类型下的文件的json格式可以各不相同。

名词解释:索引、类型、文档

一个 Elasticsearch 集群可以 包含多个 索引 ,相应的每个索引可以包含多个 类型 。 这些不同的类型存储着多个 文档 ,每个文档又有 多个 属性 。

索引(名词):

如前所述,一个 索引 类似于传统关系数据库中的一个 数据库 ,是一个存储关系型文档的地方。 索引 (index) 的复数词为 indicesindexes

索引(动词):

索引一个文档 就是存储一个文档到一个 索引 (名词)中以便被检索和查询。这非常类似于 SQL 语句中的 INSERT 关键词,除了文档已存在时,新文档会替换旧文档情况之外。

类型:

如果将索引理解为数据库,那么类型就可以理解为表。但这是一个不正确的对比,在7.x将类型过时移除了。
https://www.cnblogs.com/wangzhen3798/p/10765202.html

安装

docker 安装比较简单,所以采用docker安装。


docker pull elasticsearch:7.13.2

docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" elasticsearch:7.13.2

9300端口: ES节点之间通讯使用
9200端口: ES节点 和 外部 通讯使用
9300是tcp通讯端口,集群间和TCPClient都走的它;9200是http协议的RESTful接口
转载:https://blog.csdn.net/u013045102/article/details/85322862

图片.png

增删改查

增删改查通过9200端口restFul接口实现

如:查询所有
POST http://localhost:9200/_search
content-type →application/json; charset=UTF-8

图片.png

Java Client

es7.x 提供了两种
Java Low Level REST Client
Java High Level REST Client

这里使用Java High Level REST Client构建简单demo

pom.xml

 <!--es-->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.13.2</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.13.2</version>
        </dependency>

EsTest.java

/**
 * @author Jenson
 */
public class EsTest {

    public static void main(String[] args) throws IOException {

        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("localhost", 9200, "http")));

        EsTest esTest = new EsTest();


        try {
            esTest.esBulkIndex(client);
            esTest.multiGet(client);
        } finally {
            client.close();
        }


    }

    public void esBulkIndex(RestHighLevelClient client) throws IOException {


        BulkRequest request = new BulkRequest();
        request.add(new IndexRequest("company_employee").id("1")
                .source(XContentType.JSON, "name", "huangshiren", "age", "15")
                .versionType(VersionType.EXTERNAL)
                .version(6)
        );
        request.add(new IndexRequest("company_employee").id("2")
                .source(XContentType.JSON, "name", "majiajue", "age", "14")
                .versionType(VersionType.EXTERNAL)
                .version(6)
        );
        request.add(new IndexRequest("company_employee").id("3")
                .source(XContentType.JSON, "name", "lvxiaodong", "age", "13")
                .versionType(VersionType.EXTERNAL)
                .version(6)
        );


        // 同步执行
        BulkResponse bulkResponse = client.bulk(request, RequestOptions.DEFAULT);


        for (BulkItemResponse bulkItemResponse : bulkResponse) {
            DocWriteResponse itemResponse = bulkItemResponse.getResponse();

            switch (bulkItemResponse.getOpType()) {
                case INDEX:
                case CREATE:
                    IndexResponse indexResponse = (IndexResponse) itemResponse;
                    System.out.println(indexResponse.toString());
                    break;
                case UPDATE:
                    UpdateResponse updateResponse = (UpdateResponse) itemResponse;
                    System.out.println(updateResponse.toString());
                    break;
                case DELETE:
                    DeleteResponse deleteResponse = (DeleteResponse) itemResponse;
                    System.out.println(deleteResponse.toString());
                default:
                    break;
            }
        }

    }

    public void multiGet(RestHighLevelClient client) throws IOException {


        MultiGetRequest request = new MultiGetRequest();

        request.add(
                new MultiGetRequest.Item("company_employee", "1")
        );

        MultiGetResponse response = client.mget(request, RequestOptions.DEFAULT);

        MultiGetItemResponse firstItem = response.getResponses()[0];

//      assertNull(firstItem.getFailure());
        GetResponse firstGet = firstItem.getResponse();
        String index = firstItem.getIndex();
        String id = firstItem.getId();
        if (firstGet.isExists()) {
            System.out.println("------------------------------");
            long version = firstGet.getVersion();
            System.out.println("version :" + version);
            String sourceAsString = firstGet.getSourceAsString();
            System.out.println("sourceAsString :" + sourceAsString);
            Map<String, Object> sourceAsMap = firstGet.getSourceAsMap();
            System.out.println("name :" + sourceAsMap.get("name"));
//          byte[] sourceAsBytes = firstGet.getSourceAsBytes();
        } else {
            System.out.println("找不到...............");
        }
    }

}

ES权威指南(中文、内容有过时):https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
ES指南(官方):https://www.elastic.co/guide/en/elasticsearch/reference/index.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,367评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,959评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,750评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,226评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,252评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,975评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,592评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,497评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,027评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,147评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,274评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,953评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,623评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,143评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,260评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,607评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,271评论 2 358

推荐阅读更多精彩内容