我正在尝试使用Kibana筛选包含字符串“pH”的字段。该字段名为extra.monitor_value_name
。可能的值示例包括Temperature_ABC01
、DO_ABC01
或者pH_ABC01
。
Kibana的Elasticsearch查询DSL似乎没有“包含字符串”的操作,因此我需要自定义查询语句。
我对查询DSL很陌生,你能帮我创建查询吗?
还有,叫它Query DSL合适吗?我甚至不确定术语是否正确。
我正在尝试使用Kibana筛选包含字符串“pH”的字段。该字段名为extra.monitor_value_name
。可能的值示例包括Temperature_ABC01
、DO_ABC01
或者pH_ABC01
。
Kibana的Elasticsearch查询DSL似乎没有“包含字符串”的操作,因此我需要自定义查询语句。
我对查询DSL很陌生,你能帮我创建查询吗?
还有,叫它Query DSL合适吗?我甚至不确定术语是否正确。
好的!回答一下自己的问题。
我最初的问题源于不知道field_name
与field_name.keyword
的区别。在这里阅读关键字的信息:Kibana中“field”和“field.keyword”字段之间的区别是什么?
解决方案1
以下是我最终使用的查询。我使用了一个regexp查询。我发现这篇文章有助于找到regexp的语法:
{
"query": {
"regexp": {
"extra.monitor_value_name.keyword": "pH.*"
}
}
}
解决方案2
另一个过滤的方法是在搜索栏中输入:extra.monitor_value_name.keyword:pH*
,而不使用Query DSL。
有一个有趣的事情需要注意,使用这种方法似乎不需要.keyword
。我不确定为什么。
{ "query": { "bool":{ "must_not": [{ "regexp": { "extra.monitor_value_name.keyword": "pH.*" }}]}}}
。确保你按照所示获取方括号。 - undefined尝试在Elasticsearch查询DSL中使用过滤器:
{
"query": {
"wildcard": {
"extra.monitor_value_name": {
"value": "pH.*"
}
}
}
}