博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DSL调试信息
阅读量:5759 次
发布时间:2019-06-18

本文共 1530 字,大约阅读时间需要 5 分钟。

hot3.png

验证查询

查询语句可以变得非常复杂,特别是与不同的分析器和字段映射相结合后,就会有些难度。

validate API 可以验证一条查询语句是否合法。

GET /gb/tweet/_validate/query{   "query": {      "tweet" : {         "match" : "really powerful"      }   }}

以上请求的返回值告诉我们这条语句是非法的:

{  "valid" :         false,  "_shards" : {    "total" :       1,    "successful" :  1,    "failed" :      0  }}

理解错误信息

想知道语句非法的具体错误信息,需要加上 explain 参数:

GET /gb/tweet/_validate/query?explain <1>{   "query": {      "tweet" : {         "match" : "really powerful"      }   }}

<1> explain 参数可以提供语句错误的更多详情。

很显然,我们把 query 语句的 match 与字段名位置弄反了:

{  "valid" :     false,  "_shards" :   { ... },  "explanations" : [ {    "index" :   "gb",    "valid" :   false,    "error" :   "org.elasticsearch.index.query.QueryParsingException:                 [gb] No query registered for [tweet]"  } ]}

理解查询语句

如果是合法语句的话,使用 explain 参数可以返回一个带有查询语句的可阅读描述, 可以帮助了解查询语句在ES中是如何执行的:

GET /_validate/query?explain{   "query": {      "match" : {         "tweet" : "really powerful"      }   }}

explanation 会为每一个索引返回一段描述,因为每个索引会有不同的映射关系和分析器:

{  "valid" :         true,  "_shards" :       { ... },  "explanations" : [ {    "index" :       "us",    "valid" :       true,    "explanation" : "tweet:really tweet:powerful"  }, {    "index" :       "gb",    "valid" :       true,    "explanation" : "tweet:really tweet:power"  } ]}

从返回的 explanation 你会看到 match 是如何为查询字符串 "really powerful" 进行查询的, 首先,它被拆分成两个独立的词分别在 tweet 字段中进行查询。

而且,在索引us中这两个词为"really""powerful",在索引gb中被拆分成"really" 和 "power"。 这是因为我们在索引gb中使用了english分析器。

转载于:https://my.oschina.net/fusublog/blog/3057672

你可能感兴趣的文章
在一篇文章中一个关键字出现了多少次,用lucene应该怎么做
查看>>
Struts+Tomcat搭建
查看>>
Lua数据结构的学习笔记
查看>>
Android 各层调用的方式
查看>>
puppet重申证书
查看>>
分类和回归区别
查看>>
TED Notes 1 (What leads to success)
查看>>
C++类模板
查看>>
MVC分页
查看>>
.NET MVC学习笔记(一)
查看>>
OpenRisc-67-OR的汇编
查看>>
微信公众平台开发(96) 多个功能整合
查看>>
[转]MVC4项目中验证用户登录一个特性就搞定
查看>>
c#取得应用程序根目录
查看>>
我的MYSQL学习心得(十二) 触发器
查看>>
(转)Overview : Writing Scripts in C# 使用C#书写脚本
查看>>
用Perl编写Apache模块续二 - SVN动态鉴权实现SVNAuth 禅道版
查看>>
Android 阴影,圆形的Button
查看>>
来自于确定的苦闷
查看>>
特殊用途语言特性——默认参数、内联函数和constexptr函数
查看>>