gpt4 book ai didi

elasticsearch - 在Kibana/ElasticSearch中搜索多个字段

转载 作者:行者123 更新时间:2023-12-02 22:27:14 27 4
gpt4 key购买 nike

在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"
}
}
],

}
}
}

最佳答案

为了获得上述结果,可以使用bool查询must子句或带should参数的minimum_should_match子句。您可以从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"
    }
    }
    }
  • 您还可以为每个值添加带有匹配查询的子句。并使用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的数据类型,您可以使用第一个查询。

    关于elasticsearch - 在Kibana/ElasticSearch中搜索多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61857000/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com