ElasticSearch学习(一):HTTP操作ElasticSearch

目录

一、索引操作

        1、创建索引

        2、查看索引 

        3、查看全部索引 

         四、删除索引

 二、文档操作

        1、创建文档 

        2、查询文档 

        3、修改文档 

        4、局部修改文档 

        5、删除文档

三、高级查询 

        1、全量查询 

        2、条件查询

        3、分页查询

        4、多条件查询 


        为了操作方便,我直接使用了Windows下的ElasticSearch。需要注意的一点是,ElasticSearch8以上的版本是基于java17的。

        我使用的是7.6.2的版本。下载好压缩包之后,解压,进入bin目录,双击elasticsearch.bat文件即可启动。

        启动后访问 http://localhost:9200/ ,看看能否出现正常的页面:

ElasticSearch学习(一):HTTP操作ElasticSearch_第1张图片

        如果能出现,说明已经正常启动了。

一、索引操作

        1、创建索引

        在ElasticSearch中创建索引 就等同于 在关系型数据库中创建数据库。

        首先我们打开postman发送请求

http://127.0.0.1:9200/shopping

ElasticSearch学习(一):HTTP操作ElasticSearch_第2张图片         需要注意的是,创建索引使用的是PUT请求

        有回应说明创建成功了:

ElasticSearch学习(一):HTTP操作ElasticSearch_第3张图片

        2、查看索引 

        查看shopping索引,命令不变,只不过要把请求方式改为GET请求。

ElasticSearch学习(一):HTTP操作ElasticSearch_第4张图片 ElasticSearch学习(一):HTTP操作ElasticSearch_第5张图片 

        3、查看全部索引 

        使用GET命令: 

http://127.0.0.1:9200/_cat/indices?v

  

        请求路径中的_cat 表示查看的意思,indices 表示索引,所以整体含义就是查看当前 ES 服务器中的所有索引,就好像 MySQL 中的 show tables 的感觉。

ElasticSearch学习(一):HTTP操作ElasticSearch_第6张图片

        因为我们只创建了shopping这一个索引,所以只会显示一个索引。 ElasticSearch学习(一):HTTP操作ElasticSearch_第7张图片

        对于其中表头的含义:

ElasticSearch学习(一):HTTP操作ElasticSearch_第8张图片

ElasticSearch学习(一):HTTP操作ElasticSearch_第9张图片

         四、删除索引

        路径还是不变,请求改为DELETE,即可删除shopping索引。

ElasticSearch学习(一):HTTP操作ElasticSearch_第10张图片

ElasticSearch学习(一):HTTP操作ElasticSearch_第11张图片

        再看看索引还在不在,查看全部索引

ElasticSearch学习(一):HTTP操作ElasticSearch_第12张图片

 二、文档操作

        1、创建文档 

        创建文档使用POST请求。为什么和创建索引不同呢?是因为创建文档每次会生成随机的id,每次的id都不一样,而PUT请求是幂等性的,所以不能用PUT请求。

http://127.0.0.1:9200/shopping/_doc/1001

        将_doc换为_created也可以。 

{
    "title":"小米手机", 
    "category":"小米", 
    "images":"http://www.gulixueyuan.com/xm.jpg", 
    "price":3999.00 
}

 ElasticSearch学习(一):HTTP操作ElasticSearch_第13张图片

        发送请求后的响应体:

ElasticSearch学习(一):HTTP操作ElasticSearch_第14张图片

        而如果我们要使用这个id来查询的话,非常不方便。因此在创建的时候,我们可以为其自定义id。

http://127.0.0.1:9200/shopping/_doc/1001

 ElasticSearch学习(一):HTTP操作ElasticSearch_第15张图片

        而如果这样操作,每次的id就是一样的了,因此我们也可以使用PUT请求。

        2、查询文档 

        命令不变,改为GET请求即可。

ElasticSearch学习(一):HTTP操作ElasticSearch_第16张图片

        3、修改文档 

        命令和创建一样,请求类型为POST,将要改的地方在请求体中修改。 

{
    "title":"小米手机", 
    "category":"小米", 
    "images":"http://www.gulixueyuan.com/xm.jpg", 
    "price":4000.00 
}

ElasticSearch学习(一):HTTP操作ElasticSearch_第17张图片

        再去查询一下,发现已经更改成功了。

 

        4、局部修改文档 

        一般来说,我们都不需要修改文档中所有的东西,所以我们可以只写要修改的部分。

        因为这样的操作不是幂等性,所以只能用POST请求。

        如果写为_doc有可能会被认为是新增,所以写为_update,明确表示这是修改操作。 

http://127.0.0.1:9200/shopping/_update/1001
{
    "doc":{
        "price":3000.00
    }
}

ElasticSearch学习(一):HTTP操作ElasticSearch_第18张图片

 

        5、删除文档

        命令与创建文档相同,请求方式为DELETE

三、高级查询 

        ElasticSearch最核心的操作还是查询。

        1、全量查询 

        GET请求

http://127.0.0.1:9200/shopping/_search

         查询结果:

{
    "took": 2,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 2,
            "relation": "eq"
        },
        "max_score": 1.0,
        "hits": [
            {
                "_index": "shopping",
                "_type": "_doc",
                "_id": "pXrb6H8BMLN1rdkSJX2N",
                "_score": 1.0,
                "_source": {
                    "title": "小米手机",
                    "category": "小米",
                    "images": "http://www.gulixueyuan.com/xm.jpg",
                    "price": 3999.00
                }
            },
            {
                "_index": "shopping",
                "_type": "_doc",
                "_id": "1001",
                "_score": 1.0,
                "_source": {
                    "title": "小米手机",
                    "category": "小米",
                    "images": "http://www.gulixueyuan.com/xm.jpg",
                    "price": 3000.0
                }
            }
        ]
    }
}

        2、条件查询

http://127.0.0.1:9200/shopping/_search?q=category:小米

        q后跟条件 

        但是一般来说,还是把条件放在请求体中。

        使用的命令与全量查询一样,请求体如下:

{
    "query":{
        "match":{
            "category":"小米"
        }
    }
}

        3、分页查询

        命令和全量查询一致,请求体如下:

{
    "query":{
        "match_all":{

        }
    },
    "from":0,
    "size":2
}

        from表示从第几页开始,size表示一页显示几个数据。

        4、多条件查询 

        命令与全量查询命令相同,请求体如下:

{
	"query" : {
		"bool" : {
			"must" : [
				{
					"match" : {
						"category":"小米"
					}
				},
				{
					"match" : {
						"price":3999.00
					}
				}
			]
		}
	}
}

        将查找所有条件都符合的数据(相当于and)。

        如果将must改为should,将查找满足一个或多个条件的数据(相当于or)。

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