一个关于模糊查询的问题

Elasticsearch | 作者 ruicai.li | 发布于2017年08月25日 | | 阅读数:678

一个关于模糊查询的问题,比如我的每条日志都有几个标签:namespace , app , service ,pod等等,要在按照这几个标签查出来的日志中进行模糊匹配(即关键字搜索),该怎么写查询语句?下面这个查询语句无法达到预期,就是不能满足在规定了namespace和application之后,再进行的模糊查询,而结果能匹配我所需要的。实际情况却是,只能查出来namespace=default和app=test下面的所有日志,而不能进一步的匹配包含“goose migrate start”这句话的日志
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "kubernetes.namespace": "default"
          }
        },
        {
          "term": {
            "kubernetes.labels.application": "test"
          }
        }
      ],
      "should": [
        {
          "match_phrase": {
            "log": {
              "query": "goose migrate start",
              "slop":  50
            }
          }
        }
      ]
    }
  }

[尊重社区原创,转载请保留或注明出处]
本文地址:http://elasticsearch.cn/article/243


3 个评论

都用must试试
不行,用must的话需要输入完整的日志内容,而不能只截取一个或一段关键字
你的语句查询的是前两个是与的关系,必须满足,最后一个是或的关系,不一定满足。如果这是你需要的逻辑,那么结果不对的话就是别的地方的问题。

要回复文章请先登录注册