【问题标题】:Elasticsearch substring must be contained in fieldElasticsearch 子字符串必须包含在字段中
【发布时间】:2019-03-24 00:52:36
【问题描述】:

我有以下疑问:

GET _search
{
  "query": {
    "bool" : {
      "must" : {
        "match" : {  "log": "a perfect phrase" }
      },
     "filter": 
        {
          "range": {
            "time": {
               "gte": "now-10m",
               "lte": "now"
            }
          }
        }
    }
  }
}

但是,我有时会收到包含来自a perfect phrase 的某些单词但不完全是a perfect phrase 的文档。我只想保留包含这个确切字符串的文档,而不是包含几乎这个字符串的文档。

由于这个字符串通常包含在可以包含随机数据的大得多的文档中,我认为我不能使用term 关键字。

如何查找log 字段中正好包含此字符串的所有文档?

【问题讨论】:

    标签: elasticsearch lucene kibana elastic-stack


    【解决方案1】:

    您可以使用match_phrase 代替match

    所以基本上你的搜索查询如下:

    GET your-index-name/_search
    {
      "query": {
        "bool" : {
          "must" : {
            "match_phrase" : {  "log": "a perfect phrase" }
          },
         "filter": 
            {
              "range": {
                "time": {
                   "gte": "now-10m",
                   "lte": "now"
                }
              }
            }
        }
      }
    }
    

    有关更多信息,请参阅此link

    【讨论】:

      猜你喜欢
      • 2021-09-16
      • 1970-01-01
      • 2016-02-08
      • 2019-10-07
      • 2021-03-31
      • 1970-01-01
      • 2020-09-22
      相关资源
      最近更新 更多