Elasticsearch简单操作

2022-04-07  本文已影响0人  wilsonLwx

最近在学习Elasticsearch,结合网上的视频和文档,对学到的东西做一些整理搬运,方便自己学习,也方便对此感兴趣的朋友。如有错误烦请指正。学习此篇之前,需要先安装Elasticsearch服务,为了更好的可视化体验,也可以安装Kibana(Kibana 是一种数据可视化和挖掘工具,可以用于日志和时间序列分析、应用程序监控和运营智能使用案例)结合使用。
此篇文章使用的是Elasticsearch8.1.1, Elasticsearch-analysis-ik8.1.1, Kibana8.1.1,安装好Kibana并连接Elasticsearch服务之后的界面如图:


deal_doc.png
简单的索引及映射操作
# 创建索引
PUT person

# 查询索引
GET person

# 删除索引
DELETE person

# 查询映射
GET person/_mapping

# 添加映射
PUT person/_mapping
{
  "properties": {
    "name":{
      "type":"keyword"
    },
    "age":{
      "type": "integer"
    }
  }
}

# 创建索引并添加映射
PUT person
{
  "mappings": {
    "properties": {
      "name": {
        "type": "keyword"
      },
      "age": {
        "type": "integer"
      }
    }
  }
}

# 添加字段
PUT person/_mapping
{
  "properties": {
    "address": {
      "type": "text"
    }
  }
}
简单的文档的操作
# 添加文档,指定id
PUT person/_doc/1
{
  "name":"zhangsan",
  "age": 20,
  "address": "中国广东大湾区"
}

# 添加文档,不指定id
POST person/_doc
{
  "name":"lisi",
  "age": 21,
  "address": "中国香港铜锣湾"
}

# 查询文档
GET person/_doc/Fhzy_H8BX7CMmb5VcgST

# 查询所有文档
GET person/_search

# 修改文档
PUT person/_doc/1
{
  "name":"zhangsan",
  "age": 20,
  "address": "中国广东广州番禺区"
}

# 根据id删除文档
DELETE person/_doc/Fhzy_H8BX7CMmb5VcgST
简单的分词操作
analysis.png

原生的分词器对中文的分词支持不友好,一个字为一个词,所以还需要安装ik分词器插件,安装之后,可以按照粗细粒度分词


analysis1.png analysis2.png
简单的词条查询
# term词条查询。查询的条件字符串和词条完全匹配
# es 默认使用的分词器是standard,中文字符一个字一个词
GET person/_search
{
  "query": {
    "term": {
      "address": {
        "value": "杭州"
      }
    }
  }
}

# match 先对查询的字符串进行分词,再查询,求并集
GET person/_search
{
  "query": {
    "match": {
      "address": "上海市嘉定区"
    }
  }
}

批量操作
# 批量操作
POST _bulk
{"delete":{"_index":"person", "_id": "3"}}
{"create":{"_index":"person", "_id": "3"}}
{"name":"美少女战士", "age":18, "address":"银河系水冰月"}
{"update":{"_index":"person", "_id": "2"}}
{"doc":{"name":"lisibaba"}}
python代码的简单操作
from elasticsearch import Elasticsearch

# elasticsearch集群服务器地址
ES = [
    'http://192.168.16.130:9200'
]

# 创建elasticsearch客户端
es = Elasticsearch(
    ES,
    # 启动前嗅探es集群服务器
    sniff_on_start=True,
    # es集群服务器节点连接异常时是否刷新es节点信息
    sniff_on_node_failure=True,
    # 每60秒刷新节点信息
    sniff_timeout=60
)

# get document api
print(es.get(index="person", id="1"))

# get index api
print(es.indices.get(index="person"))

# search
query = {
    "match": {
        "address": {"query": "中国", "analyzer": "ik_max_word"}
    }
}
print(es.search(index='person',
                # 分页
                from_=1,
                # 每页条数
                size=1,
                query=query
                ))

elasticsearch-py的语法截至当前版本与之前的版本有些许变化,需要阅读相关文档,其他更多、更高级的用法可以查看elasticsearch-py

上一篇下一篇

猜你喜欢

热点阅读