使用 Query DSL 查询字段是否包含字符串
Query to see if a field contains a string using Query DSL
我正在尝试为包含字符串 "pH" 的字段过滤 Kibana。该字段称为 extra.monitor_value_name
。潜在值的示例有 Temperature_ABC01
、DO_ABC01
或 pH_ABC01
.
Kibana 的 Elasticsearch 查询 DSL 似乎没有 "contains string" 所以我需要自定义查询。
我是查询 DSL 的新手,你能帮我创建查询吗?
还有,叫Query DSL合适吗?我什至不确定正确的措辞。
好的!回过头来回答我自己的问题。
我最初的问题源于不了解 field_name
与 field_name.keyword
。在此处阅读有关关键字的信息:What's the difference between the 'field' and 'field.keyword' fields in Kibana?
解决方案 1
这是我最终使用的查询。我使用了正则表达式查询。我发现 this article 有助于找出正则表达式的语法:
{
"query": {
"regexp": {
"extra.monitor_value_name.keyword": "pH.*"
}
}
}
解决方案 2
另一种无需查询 DSL 即可进行过滤的方法是在搜索字段中键入:extra.monitor_value_name.keyword:pH*
。
需要注意的一件有趣的事情是 .keyword
对于此方法似乎不是必需的。我不知道为什么。
使用 Elasticsearch 查询 DSL 在过滤器中试试这个:
{
"query": {
"wildcard": {
"extra.monitor_value_name": {
"value": "pH.*"
}
}
}
}
我正在尝试为包含字符串 "pH" 的字段过滤 Kibana。该字段称为 extra.monitor_value_name
。潜在值的示例有 Temperature_ABC01
、DO_ABC01
或 pH_ABC01
.
Kibana 的 Elasticsearch 查询 DSL 似乎没有 "contains string" 所以我需要自定义查询。
我是查询 DSL 的新手,你能帮我创建查询吗?
还有,叫Query DSL合适吗?我什至不确定正确的措辞。
好的!回过头来回答我自己的问题。
我最初的问题源于不了解 field_name
与 field_name.keyword
。在此处阅读有关关键字的信息:What's the difference between the 'field' and 'field.keyword' fields in Kibana?
解决方案 1
这是我最终使用的查询。我使用了正则表达式查询。我发现 this article 有助于找出正则表达式的语法:
{
"query": {
"regexp": {
"extra.monitor_value_name.keyword": "pH.*"
}
}
}
解决方案 2
另一种无需查询 DSL 即可进行过滤的方法是在搜索字段中键入:extra.monitor_value_name.keyword:pH*
。
需要注意的一件有趣的事情是 .keyword
对于此方法似乎不是必需的。我不知道为什么。
使用 Elasticsearch 查询 DSL 在过滤器中试试这个:
{
"query": {
"wildcard": {
"extra.monitor_value_name": {
"value": "pH.*"
}
}
}
}