• ElasticSearch 使用


    一、索引操作

    ---------------------------------

    创建索引(PUT)

    PUT /索引名

    curl -X PUT http://10.20.20.214:9200/shopping

    设置映射关系(类似mysql的表的字段设置属性) (PUT /索引名/_mapping)

    {"properties":{          //特性
        "name":{            //字段
            "type":"text",    //字段属性
            "index":true    //是否能被索引
            }
        }
    }
    curl -X PUT http://10.20.20.214:9200/user
    {"acknowledged":true,"shards_acknowledged":true,"index":"user"}
    
    curl -X PUT http://10.20.20.214:9200/user/_mapping?pretty -d '{"properties":{"name":{"type":"text","index":true}, "sex":{"type":"keyword","index":true},"tel":{"type":"keyword","index":false}}}' -H "Content-Type:application/json"
    {
      "acknowledged" : true
    }

    查询映射关系:GET /索引名/_mapping

     curl -X GET http://10.20.20.214:9200/user/_mapping?pretty
    {
      "user" : {
        "mappings" : {
          "properties" : {
            "name" : {
              "type" : "text"
            },
            "sex" : {
              "type" : "keyword"
            },
            "tel" : {
              "type" : "keyword",
              "index" : false
            }
          }
        }
      }
    }
    • 查询字段type:keyword的则 match查询时,全词模糊匹配。
    • 查询字段type:text 的则 match查询时,输入的查询关键词会被拆分后再进行模糊匹配

    查询索引(GET /_cat/indices?v)

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

    二、数据操作

    --------------------------------

    添加数据 (body中添加数据{} json格式)

    • POST /索引名/_doc 
    • PUT /索引名/_create
    curl -X POST http://10.20.20.214:9200/shopping/_doc  -d '{"name":"zhangmingda", "age":23}' -H "Content-Type:application/json"

    查询数据 

    • 查单条数据:GET /索引名/_doc/索引ID
    • 查所有数据:GET /索引名/_search 
    [root@vm10-20-9-45 ElasticSearch]# curl -X GET http://10.20.20.214:9200/shopping/_search?pretty=true
    {
      "took" : 438,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 6,
          "relation" : "eq"
        },
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "4V9BSnsBL-0_1XxfCTs7",
            "_score" : 1.0,
            "_source" : {
              "name" : "zhangmingda",
              "age" : 23
            }
          },
          .......
        ]
      }
    }
    • 过滤查询

    • GET /index/_search?pretty body中传递查询参数
    {"query":{"match":{"category":"小米"}}}
    curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match":{"category":"小米"}}}'
    • 查询所有(body传参)
    {"query":{"match_all":{}}}
      • 分页查询
     {"query":{"match_all":{}},"from":0,"size":2}
    curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_all":{}},"from":0,"size":2}'
    {
      "took" : 0,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 13,
          "relation" : "eq"
        },
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "4V9BSnsBL-0_1XxfCTs7",
            "_score" : 1.0,
            "_source" : {
              "name" : "zhangmingda",
              "age" : 23
            }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "519NSnsBL-0_1XxfIztW",
            "_score" : 1.0,
            "_source" : {
              "name" : "zhangmingda",
              "age" : 23
            }
          }
        ]
      }
    }
    • 只要数据的特定字段"query":{"match_all":{}},"_source":["title"]}
    curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_all":{}},"_source":["title"]}'
    [root@vm10-20-9-45 ~]# curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_all":{}},"_source":["title"]}'
    {
      "took" : 13,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 13,
          "relation" : "eq"
        },
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "4V9BSnsBL-0_1XxfCTs7",
            "_score" : 1.0,
            "_source" : { }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "519NSnsBL-0_1XxfIztW",
            "_score" : 1.0,
            "_source" : { }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "6F9NSnsBL-0_1XxfMjvj",
            "_score" : 1.0,
            "_source" : { }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10001",
            "_score" : 1.0,
            "_source" : {
              "title" : "华为V8"
            }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10002",
            "_score" : 1.0,
            "_source" : {
              "title" : "小米手机4"
            }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10003",
            "_score" : 1.0,
            "_source" : {
              "title" : "小米手机4"
            }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10004",
            "_score" : 1.0,
            "_source" : {
              "title" : "小米手机4"
            }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10005",
            "_score" : 1.0,
            "_source" : {
              "title" : "小米手机6"
            }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10008",
            "_score" : 1.0,
            "_source" : {
              "title" : "小米手机8"
            }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "20008",
            "_score" : 1.0,
            "_source" : {
              "title" : "华为V1"
            }
          }
        ]
      }
    }
    输出
    • 查询&排序 & 分页
      "sort": {"price":{"order":"desc"}},"from":2,"size":3
      {"query":{"match_all":{}},"_source":["title","price"],"sort": {"price":{"order":"desc"}},"from":2,"size":3}
    curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_all":{}},"_source":["title","price"],"sort": {"price":{"order":"desc"}},"from":2,"size":3}'
    • 全文查询,匹配即可,不做字符拆分"match_phrase"
    curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_phrase":{"category":"小米"}}}'
    curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_phrase":{"category":"米"}}}'
    {
      "took" : 3,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 5,
          "relation" : "eq"
        },
        "max_score" : 0.50209194,
        "hits" : [
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10002",
            "_score" : 0.50209194,
            "_source" : {
              "title" : "小米手机4",
              "category" : "小米",
              "images" : "http://www.xiaomi.com",
              "price" : 2993.0
            }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10003",
            "_score" : 0.50209194,
            "_source" : {
              "title" : "小米手机4",
              "category" : "小米",
              "images" : "http://www.xiaomi.com",
              "price" : 2993.0
            }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10004",
            "_score" : 0.50209194,
            "_source" : {
              "title" : "小米手机4",
              "category" : "小米",
              "images" : "http://www.xiaomi.com",
              "price" : 2993.0
            }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10005",
            "_score" : 0.50209194,
            "_source" : {
              "title" : "小米手机6",
              "category" : "小米",
              "images" : "http://www.xiaomi.com",
              "price" : 2999.0
            }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10008",
            "_score" : 0.50209194,
            "_source" : {
              "title" : "小米手机8",
              "category" : "小米",
              "images" : "http://www.xiaomi.com",
              "price" : 8999.0
            }
          }
        ]
      }
    }
    输出
    • 高亮显示字段 "highlight":{"fields":{"字段":{}}}
    curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_phrase":{"category":"米"}},"highlight":{"fields":{"category":{}}}}'
    curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -H "Content-Type:application/json" -d '{"query":{"match_phrase":{"category":"米"}},"highlight":{"fields":{"category":{}}}}'
    {
      "took" : 36,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 5,
          "relation" : "eq"
        },
        "max_score" : 0.50209194,
        "hits" : [
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10002",
            "_score" : 0.50209194,
            "_source" : {
              "title" : "小米手机4",
              "category" : "小米",
              "images" : "http://www.xiaomi.com",
              "price" : 2993.0
            },
            "highlight" : {
              "category" : [
                "小<em>米</em>"
              ]
            }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10003",
            "_score" : 0.50209194,
            "_source" : {
              "title" : "小米手机4",
              "category" : "小米",
              "images" : "http://www.xiaomi.com",
              "price" : 2993.0
            },
            "highlight" : {
              "category" : [
                "小<em>米</em>"
              ]
            }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10004",
            "_score" : 0.50209194,
            "_source" : {
              "title" : "小米手机4",
              "category" : "小米",
              "images" : "http://www.xiaomi.com",
              "price" : 2993.0
            },
            "highlight" : {
              "category" : [
                "小<em>米</em>"
              ]
            }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10005",
            "_score" : 0.50209194,
            "_source" : {
              "title" : "小米手机6",
              "category" : "小米",
              "images" : "http://www.xiaomi.com",
              "price" : 2999.0
            },
            "highlight" : {
              "category" : [
                "小<em>米</em>"
              ]
            }
          },
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "10008",
            "_score" : 0.50209194,
            "_source" : {
              "title" : "小米手机8",
              "category" : "小米",
              "images" : "http://www.xiaomi.com",
              "price" : 8999.0
            },
            "highlight" : {
              "category" : [
                "小<em>米</em>"
              ]
            }
          }
        ]
      }
    }
    输出
    • 分组查询
    {
        "aggs":{ //聚合操作
            "price_group":{ //名称随意起名
                "terms":{    //分组
                    "field": "price" //分组字段
                }
            }
        }
    }

    测试分组查询:

    curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -d '{"aggs":{"price_group":{"terms":{"field":"price"}}}}' -H "Content-Type:application/json"
    curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -d '{"aggs":{"price_group":{"terms":{"field":"price"}}}}' -H "Content-Type:a
    {
      "took" : 23,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 13,
          "relation" : "eq"
        },
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "shopping",
            "_type" : "_doc",
            "_id" : "4V9BSnsBL-0_1XxfCTs7",
            "_score" : 1.0,
            "_source" : {
              "name" : "zhangmingda",
              "age" : 23
            }
          },
          .......
        ]
      },
      "aggregations" : {
        "price_group" : {
          "doc_count_error_upper_bound" : 0,
          "sum_other_doc_count" : 0,
          "buckets" : [
            {
              "key" : 2993.0,
              "doc_count" : 4
            },
            {
              "key" : 4999.0,
              "doc_count" : 2
            },
            {
              "key" : 8999.0,
              "doc_count" : 2
            },
            {
              "key" : 2999.0,
              "doc_count" : 1
            },
            {
              "key" : 3999.0,
              "doc_count" : 1
            }
          ]
        }
      }
    }
    输出

    不显示原始数据:加 "size":0

    {"aggs":{"price_group":{"terms":{"field":"price"}}},"size":0}

    结果

    curl -X GET http://10.20.20.214:9200/shopping/_search?pretty -d '{"aggs":{"price_group":{"terms":{"field":"price"}}},"size":0}' -H "Content-Type:application/json"
    {
      "took" : 5,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 13,
          "relation" : "eq"
        },
        "max_score" : null,
        "hits" : [ ]
      },
      "aggregations" : {
        "price_group" : {
          "doc_count_error_upper_bound" : 0,
          "sum_other_doc_count" : 0,
          "buckets" : [
            {
              "key" : 2993.0,
              "doc_count" : 4
            },
            {
              "key" : 4999.0,
              "doc_count" : 2
            },
            {
              "key" : 8999.0,
              "doc_count" : 2
            },
            {
              "key" : 2999.0,
              "doc_count" : 1
            },
            {
              "key" : 3999.0,
              "doc_count" : 1
            }
          ]
        }
      }
    }

     

    更新数据

    • 全量更新 PUT  /index/_doc/id  -d {'数据'}
    curl -X PUT http://10.20.20.214:9200/shopping/_doc/1002  -d '{"name":"zhangmingda", "age":22}' -H "Content-Type:application/json"
    • 局部数据更新 POST /index/_update/id -d {"doc":{数据}}
    curl -X POST http://10.20.20.214:9200/shopping/_update/1002  -d '{"doc":{"age":33}}' -H "Content-Type:application/json"

    删除数据

    • DELETE /index/_doc/数据id
    curl -X DELETE http://10.20.20.214:9200/shopping/_doc/1002  
    {"_index":"shopping","_type":"_doc","_id":"1002","_version":4,"result":"deleted","_shards":{"total":2,"successful":2,"failed":0},"_seq_no":9,"_primary_term":1}
  • 相关阅读:
    提示“此Flash Player与您的地区不相容,请重新安装Flash”的解决办法
    python中安装并使用redis
    linux安装flash player来播放视频
    安装redis
    centos6.5安装无线网卡驱动并配置wifi
    centos安装java的jdk
    001-python简介
    源码
    进程间通信之综述
    图的概念
  • 原文地址:https://www.cnblogs.com/zhangmingda/p/15145502.html
Copyright © 2020-2023  润新知