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 ...
随机推荐
- Spark 宽窄依赖和stage的划分
窄依赖 父RDD和子RDD partition之间的关系是一对一的,或者父RDD一个partition只对应一个子RDD的partition情况下的父RDD和子RDD partition关系是多对一的 ...
- Python_模块的定义与使用
1.模块的定义: 1.1 标准格式: import 模块名 模块名.函数名(实参列表) 1.2 特殊格式: from 模块名 import 函数名1,函数名2... 函数名(实参列表) 2.模块的使用 ...
- 微信小程序使用本地图片在真机不显示的问题
最近做的小程序,在真机测试发现有些本地图片在开发工具上可以显示,但是在真机上预览的时候不能显示 代码是这样写的 <view class='seat-size' wx:for="{{it ...
- 0029redis单机版环境搭建
linux环境下安装单机版redis,主要分为如下几步: 1. 安装gcc 2.下载安装包 3.解压安装包 4.进入解压目录并执行make和make install命令 5.查看默认安装目录 6.更改 ...
- 序列:SEQUENCE
一.序列介绍 Oracle的序列是一种数据库对象,主要作用是用来产生唯一值.序列被创建以后可以通过数据字典找到序列对象,因此序列可以被多个对象共享. 二.创建序列 序列使用CREATE SEQUENC ...
- ArrayList && LinkList
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList ...
- python - Django 跨域配置
一:settings 中间件配置路径 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.s ...
- CSP2019 D2T2 划分 (单调队列DP)
题目 洛谷传送门 题解 就是这道题搞我退役考场上写了n^2 64分,结果爆成8-12分.直接GG. 考场上想到正解的写法被自己否决了 题解传送门(看到这道送我退役的题目⑧太想写题解) 六行O(n2)O ...
- 2019.11.15 JQ图片轮播
<div class="three"> <div class="bjtp"> <img class="bjpic b1& ...
- neo4j基础操作
删除所有节点 MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r 创建节点 CREATE(:person{name:'潘峰',age:27}) CREATE( ...