在 Kibana /ElasticSearch 中搜索多个字段
Search Multiple Fields in Kibana /ElasticSearch
在 SQL 我有
select Column1 , column2, column3 from Table where Column4 in ['a','b','c','d']
我正在尝试在 Kibana 中实现 SQL 语句,但我在编写 In 条件时遇到了挑战。
{
"query": {
"bool": {
"must": [
{
"term": {
"field1": "X"
}
},
{
"term": {
"field2": "Z"
}
}
],
}
}
}
只需将你想要的值写成一个数组即可。
在你的例子中,写 [a,b,c,d] 而不是 "X"
要获得上述结果,您可以使用 bool
查询 must
子句或带有 minimum_should_match
参数的 should
子句。您可以从 here.
参考更多相关信息
为以上列创建的映射是:
映射
"mappings" : {
"properties" : {
"column1" : {
"type":"text"
},
"column2" : {
"type":"text"
},
"column3" : {
"type":"text"
},
"column4" : {
"type":"text"
}
}
}
您可以通过两种方式获取搜索结果:
- 您可以在
must
子句中将所有搜索值传递给 match
查询。 Match
默认使用 OR 运算符。因此,它将匹配 column4
值与这些 "a b c d" 中的任何一个匹配的任何文档。您可以从 here. 了解匹配查询的默认运算符
查询:
{
"_source": [
"column1",
"column2",
"column3"
],
"query": {
"match": {
"column4": "a b c d"
}
}
}
- 您也可以在每个值的匹配查询中使用 should 子句。并使用
minimum_should_match
参数限制为只有一个匹配项。
查询 2:
{
"_source": ["column1", "column2", "column3"],
"query" : {
"bool" : {
"should" : [
{
"match" : {
"column4" : "a"
}
},
{
"match" : {
"column4" : "b"
}
},
{
"match" : {
"column4" : "c"
}
},
{
"match" : {
"column4" : "d"
}
}
],
"minimum_should_match" : "1"
}
}
}
对于 column4
的数据类型,您可以使用第一个查询。
我们也可以使用"query_string"查询来达到同样的目的。由于我们希望在同一字段上匹配多个值,因此可以将 query_string 与 default_field 设置为搜索字段一起使用。
{
"_source": ["column1", "column2", "column3"],
"query": {
"query_string" : {
"query" : "a OR b OR c OR d",
"default_field" : "column4"
}
}
}
在 SQL 我有
select Column1 , column2, column3 from Table where Column4 in ['a','b','c','d']
我正在尝试在 Kibana 中实现 SQL 语句,但我在编写 In 条件时遇到了挑战。
{
"query": {
"bool": {
"must": [
{
"term": {
"field1": "X"
}
},
{
"term": {
"field2": "Z"
}
}
],
}
}
}
只需将你想要的值写成一个数组即可。
在你的例子中,写 [a,b,c,d] 而不是 "X"
要获得上述结果,您可以使用 bool
查询 must
子句或带有 minimum_should_match
参数的 should
子句。您可以从 here.
为以上列创建的映射是:
映射
"mappings" : {
"properties" : {
"column1" : {
"type":"text"
},
"column2" : {
"type":"text"
},
"column3" : {
"type":"text"
},
"column4" : {
"type":"text"
}
}
}
您可以通过两种方式获取搜索结果:
- 您可以在
must
子句中将所有搜索值传递给match
查询。Match
默认使用 OR 运算符。因此,它将匹配column4
值与这些 "a b c d" 中的任何一个匹配的任何文档。您可以从 here. 了解匹配查询的默认运算符
查询:
{
"_source": [
"column1",
"column2",
"column3"
],
"query": {
"match": {
"column4": "a b c d"
}
}
}
- 您也可以在每个值的匹配查询中使用 should 子句。并使用
minimum_should_match
参数限制为只有一个匹配项。
查询 2:
{
"_source": ["column1", "column2", "column3"],
"query" : {
"bool" : {
"should" : [
{
"match" : {
"column4" : "a"
}
},
{
"match" : {
"column4" : "b"
}
},
{
"match" : {
"column4" : "c"
}
},
{
"match" : {
"column4" : "d"
}
}
],
"minimum_should_match" : "1"
}
}
}
对于 column4
的数据类型,您可以使用第一个查询。
我们也可以使用"query_string"查询来达到同样的目的。由于我们希望在同一字段上匹配多个值,因此可以将 query_string 与 default_field 设置为搜索字段一起使用。
{
"_source": ["column1", "column2", "column3"],
"query": {
"query_string" : {
"query" : "a OR b OR c OR d",
"default_field" : "column4"
}
}
}