Py学习  »  Elasticsearch

Elasticsearch(ES)的基本使用

追风人聊Java • 2 年前 • 186 次点击  

1. 概述

之前聊了一下 Elasticsearch 的安装,今天我们来说说 Elasticsearch 的基本使用。

2. Elasticsearch索引的使用

索引(index)相当于是mysql中的表。

2.1 创建索引

1)Head插件方式

选择 索引 页签,点击【新建索引】按钮,输入索引名称、分片数、副本数,点击【OK】

image

之所以集群健康值呈现黄色,是因为目前是用单服务器跑的Elasticsearch,而副本是要存储在不同的服务器上的,之后会聊一下 Elasticsearch 集群的搭建。

image

2)RESTFUL接口方式

PUT http://192.168.1.11:9200/index_user

参数:

{
    "settings":{
        "index":{
            "number_of_shards":5,  // 分片数
            "number_of_replicas":0 // 副本数
        }
    }
}

2.2 查看集群健康状况

RESTFUL接口方式

GET http://192.168.1.11:9200/_cluster/health

响应:

{
    "cluster_name": "zhuifengren-es",
    "status": "yellow",
    "timed_out": false,
    "number_of_nodes": 1,
    "number_of_data_nodes": 1,
    "active_primary_shards": 6,
    "active_shards": 6,
    "relocating_shards": 0,
    "initializing_shards": 0,
    "unassigned_shards": 5,
    "delayed_unassigned_shards": 0,
    "number_of_pending_tasks": 0,
    "number_of_in_flight_fetch": 0,
    "task_max_waiting_in_queue_millis": 0,
    "active_shards_percent_as_number": 54.54545454545454
}

2.3 删除索引

1)Head插件方式

在 概览 页签,找到需要删除的索引,选择 动作 —> 删除...

image

2)RESTFUL接口方式

DELETE http://192.168.1.11:9200/index_user

2.4 查看集群整体信息

RESTFUL接口方式

GET http://192.168.1.11:9200/_cat/indices?v

响应:

health status index            uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .geoip_databases pE4IpIAeSA2AiJzdDdviYA   1   0         42           64     65.1mb         65.1mb
green  open   index_user       2z4cELBeQeijTagp86ShbQ   5   0          0            0        1kb            1kb

3. Elasticsearch映射的使用

映射(mapping)相当于是mysql中的表结构定义。

3.1 Elasticsearch中的主要数据类型

文本类型:text,keyword

整型:long,integer,short,byte

浮点型:double,float

布尔型:boolean

日期型:date

对象型:object

3.2 创建索引并创建映射

RESTFUL接口方式

PUT http://192.168.1.11:9200/index_user

参数:

{
    "settings":{
        "index":{
            "number_of_shards":5,
            "number_of_replicas":0
        }
    },
    "mappings" : {
        "properties":{
            "name":{
                "type":"text",    // 数据类型
                "index":true      // 是否索引
            },
            "loginName":{
                "type":"keyword",
                "index":false
            },
            "age":{
                "type":"integer",
                "index":false
            }
        }
    }
}

3.3 在已有的索引上维护mapping

RESTFUL接口方式

POST http://192.168.1.11:9200/index_user/_mapping

参数:

{
    "properties":{
        "nickname":{
            "type":"keyword",
            "index":false
        }
    }
}

注意:mapping中的属性,只能添加,不能修改。如果属性设置需要变更,需要删除索引重建。

3.4 查看索引的分词效果

RESTFUL接口方式

GET http://192.168.1.11:9200/index_user/_analyze

参数:

{
    "field": "name",
    "text": "lisa brown"
}

4. Elasticsearch文档的使用

文档(document)相当于是mysql中的数据行。

4.1 新增文档

RESTFUL接口方式

POST http://192.168.1.11:9200/index_user/_doc/1

注:url中最后的1是文档在Elasticsearch中的ID,与业务ID无关,如果不写,则会自动生成一个随机字符串作为文档的ID

参数:

{
    "name":"zhang san",
    "loginName":"zs",
    "age":30
}

如果没有手动创建 映射(mapping),则新增文档后,Elasticsearch会根据文档的字段类型自动创建 映射(mapping)。

4.2 删除文档

RESTFUL接口方式

DELETE http://192.168.1.11:9200/index_user/_doc/1

4.3 修改文档

RESTFUL接口方式

1)只修改部分字段

POST http://192.168.1.11:9200/index_user/_doc/1/_update

参数:

{
    "doc":{
        "name":"zhangsan2",
        "age":33
    }
}

2)全部替换

PUT http://192.168.1.11:9200/index_user/_doc/1

参数:

{
    "name":"zhangsan",
    "loginName":"zs",
    "age":31
}

4.4 查询文档

RESTFUL接口方式

1)依据文档ID查询

GET http://192.168.1.11:9200/index_user/_doc/1

响应数据:

{
    "_index": "index_user",
    "_type": "_doc",
    "_id": "1",
    "_version": 5,
    "_seq_no": 7,
    "_primary_term": 1,
    "found": true,
    "_source": {
        "name": "zhangsan",
        "loginName": "zs",
        "age": 31
    }
}

2)查询所有

GET http://192.168.1.11:9200/index_user/_doc/_search

响应数据:

{
    "took": 2,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 2,
            "relation": "eq"
        },
        "max_score": 1.0,
        "hits": [
            {
                "_index": "index_user",
                "_type": "_doc",
                "_id": "_TVW-XsBNDgg-BBCeUvY",
                "_score": 1.0,
                "_source": {
                    "name": "lisi",
                    "loginName": "ls",
                    "age": 31
                }
            },
            {
                "_index": "index_user",
                "_type": "_doc",
                "_id": "1",
                "_score": 1.0,
                "_source": {
                    "name": "zhangsan",
                    "loginName": "zs",
                    "age": 31
                }
            }
        ]
    }
}

3)查询时自定义结果集

GET http://192.168.1.11:9200/index_user/_doc/1?_source=name,age

GET http://192.168.1.11:9200/index_user/_doc/_search?_source=name,age

5. 综述

今天简单聊了一下 Elasticsearch 的基本使用,希望能对大家的工作有所帮助。

欢迎大家帮忙点赞、评论、加关注 :)

关注追风人聊Java,每天更新Java干货。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/124682
 
186 次点击