zoukankan      html  css  js  c++  java
  • 004 REST风格中在ES中的约定

      在具体的学习前,我还是决定学一下,REST风格中在ES中的约定。

    一:索引

    1.多重索引

      先准备数据:

        如果不小心,json里的值写错了,修改过来,重新执行即可。

     1 PUT index1/_doc/1
     2 {
     3   "name":"tom1"
     4 }
     5 PUT index2/_doc/1
     6 {
     7   "name":"tom1",
     8   "age":20
     9 }
    10 PUT index3/_doc/1
    11 {
    12   "name":"tom3",
    13   "address":"tom3 is good ,in beijing"
    14 }

      多重索引:

    1  POST /index1,index2,index3/_search
    2  {
    3    "query":{
    4      "query_string": {
    5        "query":"tom1"
    6      }
    7    }
    8  }

      结果:

        返回index1,index2,index3中包含tom1的Json对象,如果只输入tom,则是查询不到值的。

     1 {
     2   "took" : 2,
     3   "timed_out" : false,
     4   "_shards" : {
     5     "total" : 3,
     6     "successful" : 3,
     7     "skipped" : 0,
     8     "failed" : 0
     9   },
    10   "hits" : {
    11     "total" : {
    12       "value" : 2,
    13       "relation" : "eq"
    14     },
    15     "max_score" : 0.6931472,
    16     "hits" : [
    17       {
    18         "_index" : "index2",
    19         "_type" : "_doc",
    20         "_id" : "1",
    21         "_score" : 0.6931472,
    22         "_source" : {
    23           "name" : "tom1",
    24           "age" : 20
    25         }
    26       },
    27       {
    28         "_index" : "index1",
    29         "_type" : "_doc",
    30         "_id" : "1",
    31         "_score" : 0.2876821,
    32         "_source" : {
    33           "name" : "tom1"
    34         }
    35       }
    36     ]
    37   }
    38 }

    2._all关键字

      所有的索引

    1  POST _all/_search
    2  {
    3    "query":{
    4      "query_string": {
    5        "query":"tom3"
    6      }
    7    }
    8  }

      效果:

     1 {
     2   "took" : 19,
     3   "timed_out" : false,
     4   "_shards" : {
     5     "total" : 6,
     6     "successful" : 6,
     7     "skipped" : 0,
     8     "failed" : 0
     9   },
    10   "hits" : {
    11     "total" : {
    12       "value" : 1,
    13       "relation" : "eq"
    14     },
    15     "max_score" : 0.2876821,
    16     "hits" : [
    17       {
    18         "_index" : "index3",
    19         "_type" : "_doc",
    20         "_id" : "1",
    21         "_score" : 0.2876821,
    22         "_source" : {
    23           "name" : "tom3",
    24           "address" : "tom3 is good ,in beijing"
    25         }
    26       }
    27     ]
    28   }
    29 }

    3.通配符的使用

      通配符主要有:* ,+ ,-

      *:

      index开头的索引中查找有tom3的JSON对象。

    1  POST /index*/_search
    2  {
    3    "query":{
    4      "query_string": {
    5        "query":"tom3"
    6      }
    7    }
    8  }

      -:

      不包含index2的索引中查找

    1 POST /index*,-index2/_search
    2 {
    3   "query":{
    4     "query_string": {
    5       "query": "tom1"
    6     }
    7   }
    8 }

    4.URL查询字符串参数

      ①ignore_unavailable:如果不存在索引,一个或者多个,都不会停止,继续运行

    1 POST /index1,index4/_search
    2 {
    3   "query":{
    4     "query_string": {
    5       "query": "tom1"
    6     }
    7   }
    8 }

      则有问题:

     1 {
     2   "error" : {
     3     "root_cause" : [
     4       {
     5         "type" : "index_not_found_exception",
     6         "reason" : "no such index [index4]",
     7         "resource.type" : "index_or_alias",
     8         "resource.id" : "index4",
     9         "index_uuid" : "_na_",
    10         "index" : "index4"
    11       }
    12     ],
    13     "type" : "index_not_found_exception",
    14     "reason" : "no such index [index4]",
    15     "resource.type" : "index_or_alias",
    16     "resource.id" : "index4",
    17     "index_uuid" : "_na_",
    18     "index" : "index4"
    19   },
    20   "status" : 404
    21 }

      加上参数:

    1 POST /index1,index4/_search?ignore_unavailable=true
    2 {
    3   "query":{
    4     "query_string": {
    5       "query": "tom1"
    6     }
    7   }
    8 }

      效果:

     1 {
     2   "took" : 1,
     3   "timed_out" : false,
     4   "_shards" : {
     5     "total" : 1,
     6     "successful" : 1,
     7     "skipped" : 0,
     8     "failed" : 0
     9   },
    10   "hits" : {
    11     "total" : {
    12       "value" : 1,
    13       "relation" : "eq"
    14     },
    15     "max_score" : 0.2876821,
    16     "hits" : [
    17       {
    18         "_index" : "index1",
    19         "_type" : "_doc",
    20         "_id" : "1",
    21         "_score" : 0.2876821,
    22         "_source" : {
    23           "name" : "tom1"
    24         }
    25       }
    26     ]
    27   }
    28 }

      ②allow_no_indices:如果没有通配符指定的索引,true可以防止报错

    1 POST /mmm*/_search?allow_no_indices=true
    2 {
    3   "query":{
    4     "query_string": {
    5       "query": "tom1"
    6     }
    7   }
    8 }

      效果:

     1 {
     2   "took" : 0,
     3   "timed_out" : false,
     4   "_shards" : {
     5     "total" : 0,
     6     "successful" : 0,
     7     "skipped" : 0,
     8     "failed" : 0
     9   },
    10   "hits" : {
    11     "total" : {
    12       "value" : 0,
    13       "relation" : "eq"
    14     },
    15     "max_score" : 0.0,
    16     "hits" : [ ]
    17   }
    18 }

    二:响应

    1.响应信息过滤

      数据:

     1 {
     2   "took" : 2,
     3   "timed_out" : false,
     4   "_shards" : {
     5     "total" : 3,
     6     "successful" : 3,
     7     "skipped" : 0,
     8     "failed" : 0
     9   },
    10   "hits" : {
    11     "total" : {
    12       "value" : 2,
    13       "relation" : "eq"
    14     },
    15     "max_score" : 0.2876821,
    16     "hits" : [
    17       {
    18         "_index" : "index1",
    19         "_type" : "_doc",
    20         "_id" : "1",
    21         "_score" : 0.2876821,
    22         "_source" : {
    23           "name" : "tom1"
    24         }
    25       },
    26       {
    27         "_index" : "index2",
    28         "_type" : "_doc",
    29         "_id" : "1",
    30         "_score" : 0.2876821,
    31         "_source" : {
    32           "name" : "tom1",
    33           "age" : 20
    34         }
    35       }
    36     ]
    37   }
    38 }

      过滤:

    1 POST /index1,index2/_search?filter_path=hits.hits._source.age
    2 {
    3   "query":{
    4     "query_string": {
    5       "query": "tom1"
    6     }
    7   }
    8 }

      效果:

     1 {
     2   "hits" : {
     3     "hits" : [
     4       {
     5         "_source" : {
     6           "age" : 20
     7         }
     8       }
     9     ]
    10   }
    11 }

    2.漂亮的结果

    1 Post /index1/_search?pretty=true
    2 {
    3   "query":{
    4     "match_all": {}
    5   }
    6 }
  • 相关阅读:
    sql random string
    ubuntu 16.04中文输入法安装
    ubuntu修改docker源
    osm3ge
    ubuntu配置环境变量 sudo gedit /etc/profile
    斐波那契数列中获取第n个数据值
    为什么redis使用单线程还能这么快?
    Redis使用规范
    redis性能提升之pipeline
    centos7 用yum安装java8
  • 原文地址:https://www.cnblogs.com/juncaoit/p/11251691.html
Copyright © 2011-2022 走看看