004 API约定
在具体的学习前,我还是决定学一下,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约定的更多相关文章
- ECharts之force力导向布局图——数据源说明及后端API约定
Echarts ? 关于 Echarts 请移步这里 force 力导向图 实现方式,如: function require_EC () { require( [ 'echarts', //载入for ...
- elasticsearch api约定
elasticsearch REST API 使用JSON通过HTTP协议传输. 本约定贯穿整个REST API,除非有特别的说明. 一.多重索引 大多数APIs引用到一个index参数来在多个索引中 ...
- elasticsearch 第四篇(API约定)
对多个indices进行操作 es中大多resetapi支持请求多个index, 例如”test1,test2,test3”,index也可以使用通配符, 例如”test*“, 还可以使用+,-来包含 ...
- EF Code First教程-02.1 Fluent API约定配置
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- Entity Framework 5.0系列之约定配置
Code First之所以能够让开发人员以一种更加高效.灵活的方式进行数据操作有一个重要的原因在于它的约定配置.现在软件开发越来复杂,大家也都试图将软件设计的越来越灵活,很多内容我们都希望是可配置的, ...
- 【转】Entity Framework 5.0系列之约定配置
Code First之所以能够让开发人员以一种更加高效.灵活的方式进行数据操作有一个重要的原因在于它的约定配置.现在软件开发越来复杂,大家也都试图将软件设计的越来越灵活,很多内容我们都希望是可配置的, ...
- ASP.NET Web API queryString访问的一点总结
自从开始使用ASP.NET Web API,各种路由的蛋疼问题一直困扰着我,相信大家也都一样. Web API的路由配置与ASP.MVC类似,在App_Start文件夹下,有一个WebApiConfi ...
- 使用Etherscan API通过区块号获取块及叔块奖励
本文原文链接 点击这里获取Etherscan API 中文文档(完整版) 完整内容排版更好,推荐读者前往阅读. 区块(Blocks) 区块相关的 API,接口的参数说明请参考Etherscan API ...
- Etherscan API 中文文档-交易以及检查交易收据状态
本文原文链接 点击这里获取Etherscan API 中文文档(完整版) 完整内容排版更好,推荐读者前往阅读. 交易(Transaction) 交易相关的 API,接口的参数说明请参考Ethersca ...
随机推荐
- Go数据类型之复合数据类型--Slice
3.2 Slice 一个slice是一个轻量级的数据结构,提供了访问数组子序列(或者全部)元素的功能,而且slice的底层确实引用一个数组对象. 一个slice由三个部分构成:指针.长度和容量.指针指 ...
- Ansible_Day1
1.传统运维&自动化运维概念 1)传统的运维概念(硬件.软件.系统.网络) 手工安装系统.机房建设: 软件服务配置.部署通过手工的操作: 没有自动化脚本.流程: 依靠大量的运维人员完成任务: ...
- C++(四十)— C++中一个class类对象占用多少内字节
一个空的class在内存中多少字节?如果加入一个成员函数后是多大?这个成员函数存储在内存中什么部分? 一个Class对象需要占用多大的内存空间.最权威的结论是: 非静态成员变量总合. 加上编译器为了C ...
- Mongodb Sharding 集群配置
mongodb的sharding集群由以下3个服务组成: Shards Server: 每个shard由一个或多个mongod进程组成,用于存储数据 Config Server: 用于存储集群的M ...
- MySQL数据库开发规范-EC
最近一段时间一边在线上抓取SQL来优化,一边在整理这个开发规范,尽量减少新的问题SQL进入生产库.今天也是对公司的开发做了一次培训,PPT就不放上来了,里面有十来个生产SQL的案例.因为规范大部分还是 ...
- weighted—-LR的理解与推广
在YouTube团队推荐系统Rank阶段,DNN输出层使用了weighted-LR,这既是这篇论文的一大创新点,也是一大难点.在这里,重新梳理下该算法的思路与推导,并进行推广. 理解 先说下常见的逻辑 ...
- 个性化排序算法实践(三)——deepFM算法
FM通过对于每一位特征的隐变量内积来提取特征组合,最后的结果也不错,虽然理论上FM可以对高阶特征组合进行建模,但实际上因为计算复杂度原因,一般都只用到了二阶特征组合.对于高阶特征组合来说,我们很自然想 ...
- P1345 [USACO5.4]奶牛的电信[拆点+最小割]
题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...
- 使用Nuget生成类库
背景: 为了开始ITOO项目,我们先学习了一些基本知识,这些就是一个基本知识,这实现的是一种封装的思想,将方法打包,这样我们就可以在其他系统中直接引用而需要再耗费人力和财力去做,真正实现了高效率 ...
- phpcms站点部署
1 wamp部署使用wamp2.4以下版本. 2.4版本自带的php5.4以上底层变化,phpcms运行不了. 2.2版自带的php5.3.10可以兼容. 2 安装配置时,尽量为每个站点配置(http ...