学习笔记(五)、ElasticSearch入门

1、ElasticSearch简介:

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库--无论是开源还是私有。

但是 Lucene 仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。 更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理。Lucene 非常 复杂。

Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。

然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容:

  • 一个分布式的实时文档存储,每个字段 可以被索引与搜索
  • 一个分布式实时分析搜索引擎
  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数

官方文档:https://www.elastic.co

2、Elasticsearch与MySQL数据库逻辑结构概念的对比

ElasticsearchMySQL
索引(index)数据库(databases)
类型(type)表(table)
文档(document)行(row)

3、ElasticSearch部署与启动

windows 5.6.8版本:https://www.elastic.co/downloads/past-releases/elasticsearch-5-6-8

解压后运行 bin\elasticsearch.bat

浏览器输入地址:http://localhost:9200 访问

{
name: "Cdf7Y2X",
cluster_name: "elasticsearch",
cluster_uuid: "qMJWPKV4QxCfNEENQuZi6w",
version: {
number: "5.6.8",
build_hash: "688ecce",
build_date: "2018-02-16T16:46:30.010Z",
build_snapshot: false,
lucene_version: "6.6.1"
},
tagline: "You Know, for Search"
}

4、Postman调用 RestAPI

4.1、新建索引

例如我们要创建一个叫userinfo的索引 ,就以put方式提交:http://127.0.0.1:9200/userinfo

返回结果:

{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "userinfo"
}

4.2、新建文档

post方式提交: http://127.0.0.1:9200/userinfo/user

body:

{
	"username":"jack",
	"description":"JAVA小菜鸡",
	"password":"666"
}

response:

{
    "_index": "userinfo",
    "_type": "user",
    "_id": "AWjaMyh2NTv1I7PSlAUU",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "created": true
}

4.3、查询全部文档

get 方式访问:http://127.0.0.1:9200/userinfo/user/_search

response:

{
    "took": 103,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 3,
        "max_score": 1,
        "hits": [
            {
                "_index": "userinfo",
                "_type": "user",
                "_id": "AWjaNbgENTv1I7PSlAUW",
                "_score": 1,
                "_source": {
                    "username": "lucy",
                    "description": "da mei zi",
                    "password": "111"
                }
            },
            {
                "_index": "userinfo",
                "_type": "user",
                "_id": "AWjaMyh2NTv1I7PSlAUU",
                "_score": 1,
                "_source": {
                    "username": "jack",
                    "description": "JAVA小菜鸡",
                    "password": "666"
                }
            },
            {
                "_index": "userinfo",
                "_type": "user",
                "_id": "AWjaNVxrNTv1I7PSlAUV",
                "_score": 1,
                "_source": {
                    "username": "tom",
                    "description": "Hello World",
                    "password": "123"
                }
            }
        ]
    }
}

_id 属性是ElasticSearch自动生成的。我们存入的实体信息在_source 属性中。

4.4、修改文档

选择记录中的一条加上 _id 信息put方式提交:http://127.0.0.1:9200/userinfo/user/AWjaMyh2NTv1I7PSlAUU

body:

{
     "username": "jack",
     "description": "JAVA大菜鸡",
     "password": "555"
}

response:

{
    "_index": "userinfo",
    "_type": "user",
    "_id": "AWjaMyh2NTv1I7PSlAUU",
    "_version": 2,
    "result": "updated",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "created": false
}

 可以看到修改成功了,可以重新访问所有文档列表查看信息

当我们在地址中的ID不存在,则会为创建新文档

4.5、根据id查询文档

get方式请求访问:http://127.0.0.1:9200/userinfo/user/AWjaNVxrNTv1I7PSlAUV

response:

{
    "_index": "userinfo",
    "_type": "user",
    "_id": "AWjaNVxrNTv1I7PSlAUV",
    "_version": 1,
    "found": true,
    "_source": {
        "username": "tom",
        "description": "Hello World",
        "password": "123"
    }
}

4.6、匹配查询

get方式访问查询username=tom 的实体信息:http://127.0.0.1:9200/userinfo/user/_search?q=username:tom

response:

{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 1,
        "max_score": 0.2876821,
        "hits": [
            {
                "_index": "userinfo",
                "_type": "user",
                "_id": "AWjaNVxrNTv1I7PSlAUV",
                "_score": 0.2876821,
                "_source": {
                    "username": "tom",
                    "description": "Hello World",
                    "password": "123"
                }
            }
        ]
    }
}

4.7、模糊查询

查询 username中含有 ‘c’字母的 实体信息:http://127.0.0.1:9200/userinfo/user/_search?q=username:*c*

response:

{
    "took": 3,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 2,
        "max_score": 1,
        "hits": [
            {
                "_index": "userinfo",
                "_type": "user",
                "_id": "AWjaNbgENTv1I7PSlAUW",
                "_score": 1,
                "_source": {
                    "username": "lucy",
                    "description": "da mei zi",
                    "password": "111"
                }
            },
            {
                "_index": "userinfo",
                "_type": "user",
                "_id": "AWjaMyh2NTv1I7PSlAUU",
                "_score": 1,
                "_source": {
                    "username": "jack",
                    "description": "JAVA大菜鸡",
                    "password": "555"
                }
            }
        ]
    }
}

4.8、删除文档

DELETE方式提交 加上要删除的实体信息的id:http://127.0.0.1:9200/userinfo/user/111

response:

{
    "found": true,
    "_index": "userinfo",
    "_type": "user",
    "_id": "111",
    "_version": 2,
    "result": "deleted",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    }
}

ElasticSearch 的简单API调用就记录到这里,下节继续。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值