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

一:索引

1.多重索引

  先准备数据:

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

 PUT index1/_doc/1
{
"name":"tom1"
}
PUT index2/_doc/1
{
"name":"tom1",
"age":20
}
PUT index3/_doc/1
{
"name":"tom3",
"address":"tom3 is good ,in beijing"
}

  多重索引:

  POST /index1,index2,index3/_search
{
"query":{
"query_string": {
"query":"tom1"
}
}
}

  结果:

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

 {
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 3,
"successful" : 3,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 0.6931472,
"hits" : [
{
"_index" : "index2",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.6931472,
"_source" : {
"name" : "tom1",
"age" : 20
}
},
{
"_index" : "index1",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.2876821,
"_source" : {
"name" : "tom1"
}
}
]
}
}

2._all关键字

  所有的索引

  POST _all/_search
{
"query":{
"query_string": {
"query":"tom3"
}
}
}

  效果:

 {
"took" : 19,
"timed_out" : false,
"_shards" : {
"total" : 6,
"successful" : 6,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.2876821,
"hits" : [
{
"_index" : "index3",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.2876821,
"_source" : {
"name" : "tom3",
"address" : "tom3 is good ,in beijing"
}
}
]
}
}

3.通配符的使用

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

  *:

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

  POST /index*/_search
{
"query":{
"query_string": {
"query":"tom3"
}
}
}

  -:

  不包含index2的索引中查找

 POST /index*,-index2/_search
{
"query":{
"query_string": {
"query": "tom1"
}
}
}

4.URL查询字符串参数

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

 POST /index1,index4/_search
{
"query":{
"query_string": {
"query": "tom1"
}
}
}

  则有问题:

 {
"error" : {
"root_cause" : [
{
"type" : "index_not_found_exception",
"reason" : "no such index [index4]",
"resource.type" : "index_or_alias",
"resource.id" : "index4",
"index_uuid" : "_na_",
"index" : "index4"
}
],
"type" : "index_not_found_exception",
"reason" : "no such index [index4]",
"resource.type" : "index_or_alias",
"resource.id" : "index4",
"index_uuid" : "_na_",
"index" : "index4"
},
"status" : 404
}

  加上参数:

 POST /index1,index4/_search?ignore_unavailable=true
{
"query":{
"query_string": {
"query": "tom1"
}
}
}

  效果:

 {
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.2876821,
"hits" : [
{
"_index" : "index1",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.2876821,
"_source" : {
"name" : "tom1"
}
}
]
}
}

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

 POST /mmm*/_search?allow_no_indices=true
{
"query":{
"query_string": {
"query": "tom1"
}
}
}

  效果:

 {
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 0,
"successful" : 0,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 0,
"relation" : "eq"
},
"max_score" : 0.0,
"hits" : [ ]
}
}

二:响应

1.响应信息过滤

  数据:

 {
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 3,
"successful" : 3,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 0.2876821,
"hits" : [
{
"_index" : "index1",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.2876821,
"_source" : {
"name" : "tom1"
}
},
{
"_index" : "index2",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.2876821,
"_source" : {
"name" : "tom1",
"age" : 20
}
}
]
}
}

  过滤:

 POST /index1,index2/_search?filter_path=hits.hits._source.age
{
"query":{
"query_string": {
"query": "tom1"
}
}
}

  效果:

 {
"hits" : {
"hits" : [
{
"_source" : {
"age" : 20
}
}
]
}
}

2.漂亮的结果

 Post /index1/_search?pretty=true
{
"query":{
"match_all": {}
}
}

004 API约定的更多相关文章

  1. ECharts之force力导向布局图——数据源说明及后端API约定

    Echarts ? 关于 Echarts 请移步这里 force 力导向图 实现方式,如: function require_EC () { require( [ 'echarts', //载入for ...

  2. elasticsearch api约定

    elasticsearch REST API 使用JSON通过HTTP协议传输. 本约定贯穿整个REST API,除非有特别的说明. 一.多重索引 大多数APIs引用到一个index参数来在多个索引中 ...

  3. elasticsearch 第四篇(API约定)

    对多个indices进行操作 es中大多resetapi支持请求多个index, 例如”test1,test2,test3”,index也可以使用通配符, 例如”test*“, 还可以使用+,-来包含 ...

  4. EF Code First教程-02.1 Fluent API约定配置

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  5. Entity Framework 5.0系列之约定配置

    Code First之所以能够让开发人员以一种更加高效.灵活的方式进行数据操作有一个重要的原因在于它的约定配置.现在软件开发越来复杂,大家也都试图将软件设计的越来越灵活,很多内容我们都希望是可配置的, ...

  6. 【转】Entity Framework 5.0系列之约定配置

    Code First之所以能够让开发人员以一种更加高效.灵活的方式进行数据操作有一个重要的原因在于它的约定配置.现在软件开发越来复杂,大家也都试图将软件设计的越来越灵活,很多内容我们都希望是可配置的, ...

  7. ASP.NET Web API queryString访问的一点总结

    自从开始使用ASP.NET Web API,各种路由的蛋疼问题一直困扰着我,相信大家也都一样. Web API的路由配置与ASP.MVC类似,在App_Start文件夹下,有一个WebApiConfi ...

  8. 使用Etherscan API通过区块号获取块及叔块奖励

    本文原文链接 点击这里获取Etherscan API 中文文档(完整版) 完整内容排版更好,推荐读者前往阅读. 区块(Blocks) 区块相关的 API,接口的参数说明请参考Etherscan API ...

  9. Etherscan API 中文文档-交易以及检查交易收据状态

    本文原文链接 点击这里获取Etherscan API 中文文档(完整版) 完整内容排版更好,推荐读者前往阅读. 交易(Transaction) 交易相关的 API,接口的参数说明请参考Ethersca ...

随机推荐

  1. Flink源码阅读(一)——Flink on Yarn的Per-job模式源码简析

    一.前言 个人感觉学习Flink其实最不应该错过的博文是Flink社区的博文系列,里面的文章是不会让人失望的.强烈安利:https://ververica.cn/developers-resource ...

  2. 一道简单的广搜题:Knight Moves

    这本来是要用双向宽度搜索的,但是我用简单的广搜也成功了,L<=300,也不会超时?? 另外一个问题就是,我本来想用原来的代码交,结果80分??将边界条件从小于L改成小于等于L,就对了.我可能不会 ...

  3. vetur 和 npm run lint 格式化不一致

    vetur 的 template(html) 默认使用的格式化插件是 prettyhtml,虽然可以选 prettier,和 npm run lint 的格式化保持一致,但是有时候会影响到 scrip ...

  4. SVM: 相对于logistic regression而言SVM的 cost function与hypothesis

    很多学习算法的性能都差不多,关键不是使用哪种学习算法,而是你能得到多少数据量和应用这些学习算法的技巧(如选择什么特征向量,如何选择正则化参数等) SVM在解决非线性问题上提供了强大的方法. logis ...

  5. TP5.x——initialize()中如何return

    前言 首先在tp框架中initialize中是无法直接通过return来返回任何值的,return并不会造成脚本的中断! 环境:PHP 7.0.4 | TP5.1 说明 initialize方法 首先 ...

  6. HDFS中的数据块(Block)

    我们在分布式存储原理总结中了解了分布式存储的三大特点: 数据分块,分布式的存储在多台机器上 数据块冗余存储在多台机器以提高数据块的高可用性 遵从主/从(master/slave)结构的分布式存储集群 ...

  7. debug错误总结

    1, 2,就是一个大括号的问题..让你总是得不了满分..明明和别人的代码差不多. 3,就比如P1914,这种藏坑的题,或者说这一类藏坑的题. 坑是什么呢?就是位数不够往后推的时候.. 你不填坑你就得不 ...

  8. (转载) 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建AlwaysOn,前两篇是为搭建AlwaysOn 做准备的 步骤 这一篇依然使用step by step的方式 ...

  9. C# 异步编程(async&await)

    同步:同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去 异步:异步是指进程不需要一直等下去,而是继续执行下面的操作 ...

  10. neo4j基础操作

    删除所有节点 MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r 创建节点 CREATE(:person{name:'潘峰',age:27}) CREATE( ...