zoukankan      html  css  js  c++  java
  • ElasticSearch入门2: 基本用法

     

     基本用法:

     一、索引创建

    (启动集群和索引请看上一篇文章:http://www.cnblogs.com/liuxiaoming123/p/8081883.html)

    1.打开浏览器,输入请求:http://localhost:9100

    2.点击后搜索book

    3.点击OK 显示创建成功

    4.在概览中查看

    5.点击索引信息,查看结构化和非结构化索引信息

     

     1.点击 复合查询

      1.1 加入:book/novel/_mappers

      1.2加入:

    {
      "novel": {
        "properties": {
          "title": {
            "type": "text"
          }
        }
      }
    }

        1.3 勾选易读

      1.4点击 验证JSON

      1.5点击 提交请求

    2.点击概览,刷新页面

    2.1 点击索引信息

    2.2 mappings 中 不为空则 表示 结构化索引创建成功

    注:上面是结构化索引的创建在head插件中实现的,其中json编写较为繁琐,下面采用postman方式进行创建

    1.   在postman中编写json字符串(采取put提交方式提交)

    2.   请求路径:127.0.0.1:9200/people

    3.  json字符串

    {
        "settings":{
            "number_of_shards":3,
            "number_of_replicas":1
        },
        "mappings":{
            "man":{
                "properties":{
                    "name":{
                        "type":"text"
                    },
                    "country":{
                        "type":"keyword"
                    },
                    "age":{
                        "type":"integer"
                    },
                    "date":{
                        "type":"date",
                        "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
                    }
                }
            }
        }
    }

    4.json字符串的各字段介绍:

          settings: 设置

      number_of_shards: 分片数

      number_of_replicas:备份数

      mappings: 索引的映射

      man: 映射名称,此处的映射名称只能有一个不能出现多个映射(这是一个设计失误,后面的版本将不再支持。官方给出解释是:https://www.elastic.co/guide/en/elasticsearch/reference/6.0/removal-of-types.html

      properties:属性的集合 :(它下面的为各个属性,都是"属性名":{"(类型)type":"对应的类型"})注:其中Data属性有format设置日期格式

    5.编写完毕,postman发送请求

    6.浏览器刷新请求:http://localhost:9100

     

    7.点击 索引信息

    8.查看结构化索引:

    {
        "state": "open",
        "settings": {
            "index": {
                "creation_date": "1513925050386",
                "number_of_shards": "3",
                "number_of_replicas": "1",
                "uuid": "vGaF5hq4Te21atouyphn_Q",
                "version": {
                    "created": "6010199"
                },
                "provided_name": "people"
            }
        },
        "mappings": {
            "man": {
                "properties": {
                    "date": {
                        "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
                        "type": "date"
                    },
                    "country": {
                        "type": "keyword"
                    },
                    "name": {
                        "type": "text"
                    },
                    "age": {
                        "type": "integer"
                    }
                }
            }
        },
        "aliases": [],
        "primary_terms": {
            "0": 1,
            "1": 1,
            "2": 1
        },
        "in_sync_allocations": {
            "0": [
                "DkW46MGNQi-fpBkd9Odpbw",
                "EzcKH6oSSOCWMPIrwZVu0Q"
            ],
            "1": [
                "YbF3JOriS6iYJ-57Dc2eNA",
                "h1Zkz1kaS0iAkoA_XekMIQ"
            ],
            "2": [
                "0AtuJLLJQEe_0HeF6CMoRw",
                "oQukwljIS4K7gZ2ZXKJc5g"
            ]
        }
    }

     

    二、插入

    1.在postman中输入请求:127.0.0.1:9200/people/man/1 (PUT请求)

    2.插入json 数据:

    {
        "name":"晓明",
        "country":"china",
        "age":26,
        "date":"1992-08-08"
    }

    注:people 是索引, man是类型, 1是文档ID

    3.点击send发送

    4.查看浏览器 http://localhost:9100

     未刷新之前:

    刷新之后

    5.点击数据浏览查看所插入的数据:此时ID是手动指定的ID

    1.浏览器输入请求:127.0.0.1:9200/people/man/ (post请求) 点击send发送

    json字符串:

    {
        "name":"Auto晓明",
        "country":"Autochina",
        "age":26,
        "date":"1992-08-08"
    }

    2.查看浏览器 :http://localhost:9100

    3.点击数据浏览:此时新生成的为自动生成的ID

    三、修改

    1.postman提交请求:127.0.0.1:9200/people/man/1/_update

    2.请求json串为:

    {
        "doc":{
            "name":"修改晓明"
        }
    }

    4.查看浏览器:http://localhost:9100

    第一种方式:

    1. postman输入请求:127.0.0.1:9200/people/man/1/_update(post请求)

    2.json字符串:

    {
        "script":{
            "lang":"painless",
            "inline":"ctx._source.age += 10"
        }
    }

    注:script 是脚本标识

      lang 是脚本语言

      painless 是内置脚本语言

      inline 是指定脚本内容

      ctx 是脚本上下文

      _source 为当前文档

    3.浏览器查看:http://localhost:9100

    第二种方式:

    1. postman输入请求:127.0.0.1:9200/people/man/1/_update(post请求)

    2.json字符串:

    {
        "script":{
            "lang":"painless",
            "inline":"ctx._source.age = params.age",
            "params":{
                "age":100
            }
        }
    }

     

    3.查看浏览器:http://localhost:9100

     

    、删除

    1.postman输入请求: 127.0.0.1:9200/people/man/1 (DELETE方式)

     

    2.查看浏览器:http://localhost:9200/ :ID等于1的已经成功删除

    第一种:通过head插件直接删除索引

    1.查看浏览器 :http://localhost:9100 删除book索引

     

    2.输入 :删除 点击 “好”

    3.显示删除成功

    4.点击关闭

    第二种:通过postman删除索引 删除people

    1.postman输入请求:127.0.0.1:9200/people(DELETE方式) 点击send发送请求

    2.查看浏览器:http://localhost:9100 

     、查询

     

    1.准备:

       1.1 post创建机构化索引:

       1.1.1 请求:127.0.0.1:9200/people (PUT方式)

       1.1.2 json字符串:

    {
        "settings":{
            "number_of_shards":3,
            "number_of_replicas":1
        },
       "novel": {
        "properties": {
          "title": {
            "type": "text"
          },
          "author": {
            "type": "keyword"
          },
          "tittle": {
            "type": "text"
          },
          "publish_date": {
            "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
            "type": "date"
          }
        }
      }
    }

     1.2 postman插入数据:

      1.2.1 请求:127.0.0.1:9200/book/novel/1 (post方式)

      1.2.2 json 数据

    {
        "name":"晓明1",
        "country":"china1",
        "age":26,
        "date":"1992-08-08"
    }

     

    1.postman请求:127.0.0.1:9200/book/novel/1(get方式)

    1.postman请求:127.0.0.1:9200/book/_search(post请求)

    2.请求json串:

     2.1 全部查询

    {
        "query":{
            "match_all":{}
        },
        "from":1,
        "size":1
    }

     2.2 按关键字查询(含有按指定字段排序)

    {
        "query":{
            "match":{
                "name":"晓明"
            }
        },
        "sort":[
            {"_id":"desc"}
            ]
    }

    3.解释请求json串:

    match_all 是全部查询

    query 是查询关键字

    from 是从哪里查

    size 是显示多少条数据

    sort 是排序设置

     

    (多组聚合)

     1.postman请求:127.0.0.1:9200/book/_search(post请求)

     2.请求json字符串:

    {
       "aggs":{
               "group_by_name":{
                   "terms":{
                       "field":"name"
                   }
               },
               "group_by_country":{
                   "terms":{
                       "field":"country"
                   }
               },
               "group_by_date":{
                   "terms":{
                       "field":"date"
                   }
               }
               
       }
    }

     3.解析请求json字符串:

    aggs:聚合查询关键字

    group_by_word_count :聚合条件的名字(名字可自定义)

    terms 关键词

    field 是指定字段

    4.点击send发送得到如下查询信息:

    {
        "took": 10,
        "timed_out": false,
        "_shards": {
            "total": 5,
            "successful": 5,
            "skipped": 0,
            "failed": 0
        },
        "hits": {
            "total": 4,
            "max_score": 1,
            "hits": [
                {
                    "_index": "book",
                    "_type": "novel",
                    "_id": "5",
                    "_score": 1,
                    "_source": {
                        "name": "晓明",
                        "country": "china",
                        "age": 26,
                        "date": "1992-08-08"
                    }
                },
                {
                    "_index": "book",
                    "_type": "novel",
                    "_id": "8",
                    "_score": 1,
                    "_source": {
                        "name": "晓明",
                        "country": "china",
                        "age": 26,
                        "date": "1992-08-08"
                    }
                },
                {
                    "_index": "book",
                    "_type": "novel",
                    "_id": "9",
                    "_score": 1,
                    "_source": {
                        "name": "晓明9",
                        "country": "china9",
                        "age": 26,
                        "date": "1992-08-08"
                    }
                },
                {
                    "_index": "book",
                    "_type": "novel",
                    "_id": "1",
                    "_score": 1,
                    "_source": {
                        "name": "晓明1",
                        "country": "china1",
                        "age": 26,
                        "date": "1992-08-08"
                    }
                }
            ]
        },
        "aggregations": {
            "group_by_date": {
                "doc_count_error_upper_bound": 0,
                "sum_other_doc_count": 0,
                "buckets": [
                    {
                        "key": 713232000000,
                        "key_as_string": "1992-08-08T00:00:00.000Z",
                        "doc_count": 4
                    }
                ]
            },
            "group_by_country": {
                "doc_count_error_upper_bound": 0,
                "sum_other_doc_count": 0,
                "buckets": [
                    {
                        "key": "china",
                        "doc_count": 2
                    },
                    {
                        "key": "china1",
                        "doc_count": 1
                    },
                    {
                        "key": "china9",
                        "doc_count": 1
                    }
                ]
            },
            "group_by_name": {
                "doc_count_error_upper_bound": 0,
                "sum_other_doc_count": 0,
                "buckets": [
                    {
                        "key": "明",
                        "doc_count": 4
                    },
                    {
                        "key": "晓",
                        "doc_count": 4
                    },
                    {
                        "key": "1",
                        "doc_count": 1
                    },
                    {
                        "key": "9",
                        "doc_count": 1
                    }
                ]
            }
        }
    }

    注: 若聚合查询报错 请参考:http://www.cnblogs.com/liuxiaoming123/p/8117786.html

    PUT         127.0.0.1:9200/book/_mapping/novel/ 
    
    
    {
      "properties": {
        "name": { 
          "type":     "text",
          "fielddata": true
        },
         "country": { 
          "type":     "text",
          "fielddata": true
        }
       
      }
    }

    注:聚合查询其他用法:

    计算年龄的统计  总条数、最大值、最小值、平均值、总和   若:stats改成min则只显示最小值
    
    请求URL:
    
    POST  127.0.0.1:9200/book/_search
    
    请求json:
    
    {
       "aggs":{
               "group_by_age":{
                   "stats":{
                       "field":"age"
                   }
               }
               
       }
    }
    
    返回结果:
    
    {
        "took": 33,
        "timed_out": false,
        "_shards": {
            "total": 5,
            "successful": 5,
            "skipped": 0,
            "failed": 0
        },
        "hits": {
            "total": 4,
            "max_score": 1,
            "hits": [
                {
                    "_index": "book",
                    "_type": "novel",
                    "_id": "5",
                    "_score": 1,
                    "_source": {
                        "name": "晓明",
                        "country": "china",
                        "age": 26,
                        "date": "1992-08-08"
                    }
                },
                {
                    "_index": "book",
                    "_type": "novel",
                    "_id": "8",
                    "_score": 1,
                    "_source": {
                        "name": "晓明",
                        "country": "china",
                        "age": 26,
                        "date": "1992-08-08"
                    }
                },
                {
                    "_index": "book",
                    "_type": "novel",
                    "_id": "9",
                    "_score": 1,
                    "_source": {
                        "name": "晓明9",
                        "country": "china9",
                        "age": 26,
                        "date": "1992-08-08"
                    }
                },
                {
                    "_index": "book",
                    "_type": "novel",
                    "_id": "1",
                    "_score": 1,
                    "_source": {
                        "name": "晓明1",
                        "country": "china1",
                        "age": 26,
                        "date": "1992-08-08"
                    }
                }
            ]
        },
        "aggregations": {
            "group_by_age": {
                "count": 4,
                "min": 26,
                "max": 26,
                "avg": 26,
                "sum": 104
            }
        }
    }

  • 相关阅读:
    x64 平台开发 Mapxtreme 编译错误
    hdu 4305 Lightning
    Ural 1627 Join(生成树计数)
    poj 2104 Kth Number(可持久化线段树)
    ural 1651 Shortest Subchain
    hdu 4351 Digital root
    hdu 3221 Bruteforce Algorithm
    poj 2892 Tunnel Warfare (Splay Tree instead of Segment Tree)
    hdu 4031 Attack(BIT)
    LightOJ 1277 Looking for a Subsequence
  • 原文地址:https://www.cnblogs.com/liuxiaoming123/p/8087092.html
Copyright © 2011-2022 走看看