美文网首页
Elasticsearch简单操作

Elasticsearch简单操作

作者: wilsonLwx | 来源:发表于2022-04-07 16:40 被阅读0次

    最近在学习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

    相关文章

      网友评论

          本文标题:Elasticsearch简单操作

          本文链接:https://www.haomeiwen.com/subject/hxersrtx.html