zoukankan      html  css  js  c++  java
  • ElasticSearch 学习一: 基本命令

    1. 启动时指定集群和节点的名字
    ./elasticsearch -Ecluster.name=my_cluster_name -Enode.name=my_node_name
    e.g. ./elasticsearch -d -Ecluster.name=shjCluster -Enode.name=shjNode1 # -d 表示后台启动

    用 jps 可以查看是否有 Elasticsearch 的进程

    这时,只能通过 localhost 访问 elasticsearch。需要修改下面的配置才能让其它的机器也能访问。
    vim config/elasticsearch.yml
    增加 network.host: 0.0.0.0

    在这个配置文件中,更改其它的配置,可以不用每次启动都指定参数:
    cluster.name: shj-es-cluster # 指定要加入的集群名称
    node.name: esnode-1 # 指定节点
    path.data: tmp/esdata # 指定数据文件位置
    path.logs: tmp/eslog # 指定日志位置

    启动错误的话,可以先看: https://www.cnblogs.com/honeybee/p/6283623.html

    访问: http://192.168.137.11:9200/?pretty 检查是否启动成功

    批量导入数据:(在包含 accounts.json 的目录下执行下面的命令)
    curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_doc/_bulk?pretty&refresh" --data-binary "@accounts.json"

    2. 使用 kibana 访问 ES:
    修改 kibana.yml 文件中的 elasticsearch.url,指向 ES,本例中为: http://192.168.137.11:9200
    后台启动 kibana: nohup ../bin/kibana &
    访问 kibana http://localhost:5601

    在 kibana 的 Dev Tools 中的 console 里输入
    检查集群的状态
    GET /_cat/health?v 

    一些命令:
    (1) 创建一个document: PUT /indexName/typeName/id 示例:
    PUT /ecommerce/product/1
    {
        "name" : "gaolujie yagao",
        "desc" :  "gaoxiao meibai",
        "price" :  20,
        "producer" :      "gaolujie producer",
        "tags": [ "meibai", "fangzhu" ]
    }

    (2) 查询: GET /index/type/id 示例:
    GET /ecommerce/product/1

    (3) 更新文档: POST /indexName/typeName/id/_update 示例:
    POST /ecommerce/product/1/_update
    {
      "doc": {
        "name": "jiaqiangban gaolujie yagao"
      }
    }
    上面只会更新 name 这一个字段

    (4) 删除文档: DELETE /indexName/typeName/id

    (5) 条件查询 GET /ecommerce/product/_search
    (a) 查询所有的商品
    GET /ecommerce/product/_search
    {
      "query": { "match_all": {} }
    }

    (b) 查询名称包含yagao的商品,同时按照价格降序排序
    GET /ecommerce/product/_search
    {
        "query" : {
            "match" : {
                "name" : "yagao"
            }
        },
        "sort": [
            { "price": "desc" }
        ]
    }

    (c) 分页查询商品,
    GET /ecommerce/product/_search
    {
      "query": { "match_all": {} },
      "from": 1, # 从第几条(下标从0开始)开始查询
      "size": 10 # 查询多少条记录
    }

    (d) 指定要查询出来商品的名称和价格就可以
    GET /ecommerce/product/_search
    {
      "query": { "match_all": {} },
      "_source": ["name", "price"]
    }

    (e) 搜索商品名称包含yagao,而且售价大于25元的商品
    GET /ecommerce/product/_search
    {
        "query" : {
            "bool" : {
                "must" : {
                    "match" : {
                        "name" : "yagao"
                    }
                },
                "filter" : {
                    "range" : {
                        "price" : { "gt" : 25 }
                    }
                }
            }
        }
    }

    (f) 全文检索
    GET /ecommerce/product/_search
    {
        "query" : {
            "match" : {
                "producer" : "yagao producer"
            }
        }
    }
    注意: 会搜索出所有包含 "yagao" 和 "producer" 的记录。类似于数据库搜索中的 producer='yagao' or producer=‘producer'

    (g) 短语检索
    GET /ecommerce/product/_search
    {
        "query" : {
            "match_phrase" : {
                "producer" : "yagao producer"
            }
        }
    }
    注意: 类似于数据库搜索中的 producer='yagao producer'

    (h) 高亮搜索
    GET /ecommerce/product/_search
    {
        "query" : {
            "match" : {
                "producer" : "yagao"
            }
        },
        "highlight": {
            "fields" : {
                "producer" : {}
            }
        }
    }

    (6) 只返回部分字段
    GET /ecommerce/product/1?_source=name,price


    批量查询

    1. 不同 index 和 type

    GET /_mget
    {
       "docs" : [
          {
             "_index" : "test_index",
             "_type" :  "test_type",
             "_id" :    1
          },
          {
             "_index" : "test_index",
             "_type" :  "test_type",
             "_id" :    2
          }
       ]
    }

    2. 如果查询的document是一个index下的不同type种的话

    GET /test_index/_mget
    {
       "docs" : [
          {
             "_type" :  "test_type",
             "_id" :    1
          },
          {
             "_type" :  "test_type",
             "_id" :    2
          }
       ]
    }

    3. 如果查询的数据都在同一个index下的同一个type下

    GET /test_index/test_type/_mget
    {
       "ids": [1, 2]
    }
  • 相关阅读:
    投资理财知识小结1
    iOS中异常处理机制使用小结
    iOS中NSBundle使用小结
    ant design vue a-cascader 级联选择器 数据回显
    hbase数据存储及数据访问原理
    第15章: Prometheus监控Kubernetes资源与应用
    第14章:部署Java网站项目案例
    第13章:Kubernetes 鉴权框架与用户权限分配
    第12章:有状态应用部署
    第11章:Pod数据持久化
  • 原文地址:https://www.cnblogs.com/langfanyun/p/9220122.html
Copyright © 2011-2022 走看看