elasticsearch - 编写一个查询而不是四个查询
问题描述
亲爱的,
我在编写正确的复杂查询时遇到问题。我尝试编写一个查询,该查询将与其他四个查询相同:计算代码为 1 的文档?还是2??在 ci.rc 字段中并计数具有代码 9 的文档?在 ci.rc 字段中并计算代码为 0 的文档?在 ci.rc 字段中,在 ci.mti 字段中具有代码 1210 或 1230,并在 ci.mti 字段中计数具有代码 1400 或 1420 的文档
您能否建议我如何编写一个查询,该查询将与四个单独的查询相同,好吗?有什么建议吗?请。
我的一个查询的骨架:
GET /log-2020.07.08/_search?size=0
{
"query": {
"bool": {
"should": [
{
"query_string": {
"default_field": "ci.rc",
"query": "(1??) or (2??)"
}
},
{
"query_string": {
"default_field": "ci.rc",
"query": "(9??)"
}
},
{
"bool": {
"must": [
{
"regexp": {
"ci.rc": "0[0-9]{2}"
}
},
{
"regexp": {
"ci.mti": "[0-9]{2}[3|5|7|9][0-9]{1}"
}
}
]
}
}
]
}
},
"aggs": {
"rc": {
"terms": {"field": "ci.rc.keyword","size": 10}
}
}
}
缺少日期条件和最后一个单独的查询:count docs which has code 1400 or 1420 in field ci.mti
问候,丹
解决方案
查询字符串查询仅适用于这些用例。在查询字符串查询中,您可以以字符串格式编写每个查询
这里可以是细化的查询
GET /log-2020.07.08/_search?size=0
{
"query": {
"query_string": {
"query": "(ci.rc:((1??) or (2??) or (9??))) and (ci.rc:/0[0-9]{2}/) and ci.mti:/[0-9]{2}[3|5|7|9][0-9]{1}/"
}
}
}
这里还有一个链接,其语法用于将几乎每种类型的查询放入查询字符串中
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html
推荐阅读
- c# - ASP.NET Core 的“asp-fallback-*”CDN 标签助手如何工作?
- c# - 检查是否列表时空合并运算符的性能
一片空白 - apache-spark - apache spark 2.2 没有可用的 toString 方法
- laravel - Illuminate\Database\QueryException (42000) SQLSTATE[42000]: 语法错误或访问冲突
- smalltalk - Object 类中#doesNotUnderstand 的实现如何导致在 Squeak smalltalk 中打开调试器?
- java - 在 TCP 采样器中为请求发送 EOL 字节
- git - 为什么 GitHub 不是 Azure Web App 部署的选项?
- java - 如何使用 selenium webdriver 查找元素是否启用?
- angular - 如何以角度4获取特定表格行的数据
- oracle - oracle for 循环中的 ROLLBACK 不适用于 for 循环之外提到的语句