elasticsearch 在Kibana/ElasticSearch中搜索多个字段,elasticsearch,kibana,elastic-stack,elk,elasticsearch,Kibana,Elastic Stack,Elk" /> elasticsearch 在Kibana/ElasticSearch中搜索多个字段,elasticsearch,kibana,elastic-stack,elk,elasticsearch,Kibana,Elastic Stack,Elk" />

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

elasticsearch 在Kibana/ElasticSearch中搜索多个字段,elasticsearch,kibana,elastic-stack,elk,elasticsearch,Kibana,Elastic Stack,Elk,在SQL中,我有 select Column1 , column2, column3 from Table where Column4 in ['a','b','c','d'] 我试图在Kibana中实现SQL语句,在这种情况下编写SQL语句面临挑战 { "query": { "bool": { "must": [ { "term": { "field1": "X" } },

在SQL中,我有

select Column1 , column2, column3 from Table where Column4 in ['a','b','c','d']
我试图在Kibana中实现SQL语句,在这种情况下编写SQL语句面临挑战

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "field1": "X"
          }
        },
        {
          "term": {
            "field2": "Z"
          }
        }
      ],

    }
  }
}

只需将所需的值写入数组即可


在您的示例中,编写[a、b、c、d]而不是“X”

来获得上述结果,您可以使用
bool
query
must
子句或
should
子句,其中
应匹配
最小参数。关于这一点,您可以参考

为上述列创建的映射为:

映射 您可以通过两种方式获得搜索结果:

  • 您可以使用
    match
    query在
    must
    子句中传递所有搜索值<代码>匹配
  • 默认使用或运算符。因此,它将匹配
    column4
    值与这些“a b c d”中任何一个匹配的任何文档。您可以从中了解匹配查询的默认运算符 查询:
  • 您还可以为每个值使用带有匹配查询的should子句。并通过使用
    minimum\u should\u match
    参数限制为仅一个匹配
  • 问题2: 对于
    第4列的数据类型,您可以使用第一次查询。

    我们也可以使用“查询字符串”查询来实现相同的功能。由于我们希望在同一字段上匹配多个值,因此可以使用query\u string,并将default\u字段设置为search字段

    {
       "_source": ["column1", "column2", "column3"],
       "query": {
            "query_string" : {
                "query" : "a OR b OR c OR d",
                "default_field" : "column4"
            }
        }
    }
    

    虽然此代码可能提供问题的解决方案,但强烈建议您提供有关此代码为什么和/或如何回答问题的其他上下文。从长远来看,纯代码的答案通常会变得毫无用处,因为未来遇到类似问题的观众无法理解解决方案背后的原因。Query1可以是一个简单的匹配查询,而不是将其包装在bool查询中。@KumarV是的,我错过了这件事。谢谢你让我知道。将更新我的答案。
        {
        "_source": [
            "column1",
            "column2",
            "column3"
        ],
        "query": {
            "match": {
                "column4": "a b c d"
            }
        }
    }
    
     {
         "_source": ["column1", "column2", "column3"],
        "query" : {
            "bool" : {
                "should" : [
                    {
                        "match" : {
                            "column4" : "a"
                        }
                    },
                    {
                        "match" : {
                            "column4" : "b"
                        }
                    },
                    {
                        "match" : {
                            "column4" : "c"
                        }
                    },
                    {
                        "match" : {
                            "column4" : "d"
                        }
                    }
                ],
                "minimum_should_match" : "1"
            }
        }
    }
    
    {
       "_source": ["column1", "column2", "column3"],
       "query": {
            "query_string" : {
                "query" : "a OR b OR c OR d",
                "default_field" : "column4"
            }
        }
    }