ES基本操作

Mappings自定义创建映射

创建mapping

接口地址:http://es_service_addr/索引名称
请求方式:put
body: 
    {
    	"mappings": {
    	   # 属性
    		"properties": {
    		   # 字段
    			"realname": {
    				"type": "text",
    				"index": true  # index表示是否需要索引,true表示需要(默认),false表示不需要索引,需要索引就表示会被分词
    			}
    		}
    	}
    }

mapping一旦创建,就不能够在修改。如果需要修改,要把现有的索引删除,重新添加。 如果需要添加,可以post访问:http://es_service_addr/索引名称/_mapping, 参数格式同上面相同,注意增加需要去掉mappings,直接写properties。

响应

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

分析是否分词

接口地址:http://es_service_addr/索引名称/_analyze
请求方式:GET
body:
{
	"field": "realname", # 分析的字段
	"text": "我爱我的祖国" # 分析字段对应的值
}

响应:

{
    "tokens": [
        {
            "token": "我",
            "start_offset": 0,
            "end_offset": 1,
            "type": "<IDEOGRAPHIC>",
            "position": 0
        },
        {
            "token": "爱",
            "start_offset": 1,
            "end_offset": 2,
            "type": "<IDEOGRAPHIC>",
            "position": 1
        },
        {
            "token": "我",
            "start_offset": 2,
            "end_offset": 3,
            "type": "<IDEOGRAPHIC>",
            "position": 2
        },
        {
            "token": "的",
            "start_offset": 3,
            "end_offset": 4,
            "type": "<IDEOGRAPHIC>",
            "position": 3
        },
        {
            "token": "祖",
            "start_offset": 4,
            "end_offset": 5,
            "type": "<IDEOGRAPHIC>",
            "position": 4
        },
        {
            "token": "国",
            "start_offset": 5,
            "end_offset": 6,
            "type": "<IDEOGRAPHIC>",
            "position": 5
        }
    ]
}

默认是支持英文的分词,所以上面的返回值把中文拆解成了单独的汉字,如果要使用英文可以去做拓展。

文档的基本操作

添加文档与自动映射

创建文档
接口地址:http://es_service_addr/my_doc/_doc/1
    my_doc:索引名称
    _doc: 操作类型
    1:ES主键
body:
{
	"id": 1001,
	"name": "no-1",
	"desc": "we are number one",
	"create_date": "2021-01-05"
}

响应:
{
    "_index": "my_doc",
    "_type": "_doc",
    "_id": "ulVN03YBVWKanGeCxsTB",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 1,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}

删除文档内的数据

接口地址: http://es_service_addr/my_doc/_doc/1
访求方式:delete
解析: 表示删除索引my_doc下的_id=1的文档数据

删除操作其实不是物理删除,实际上是逻辑删除,通过添加逻辑标识符来判断是否删除,当磁盘数据过载后,才会去删除被标记为删除的数据

修改文档数据

接口地址: http://es_service_addr/my_doc/_doc/1/_update
请求方式:post
解析: 修改索引为my_doc数据_id=1的文档数据内容

body:
{
    "doc": {
        "name":"abc"
    }
}

这种对某个字段数据进行局部的修改,实际上在ES底层是将数据重新写了一次,并不是对这个字段修改了一下。我们自己也可以添加一个全字段的数据,ID与原来的相同,这样也可以做到更新数据的作用。

查询文档数据

请求方式:GET
请求地址:http://es_service_addr/my_doc/_doc/1?_source=id,name
解析:查询文档_doc下索引my_doc,索引_id=1的数据,并且只查询id和name这两个字段的数据

查询所有数据的id和name
http://es_service_addr/my_doc/_doc/_search?_source=id,name

判断查询数据是否存在

请求方式 HEAD
请求地址 http://es_service_addr/my_doc/_doc/1

如果请求状态码返回200,表示数据存在,请求状态码返回404,表示数据不存在