首页 > 解决方案 > 完整文档的 Elasticsearch 正则表达式不起作用

问题描述

我正在使用 Elasticsearch 来存储句子。我想找到与正则表达式匹配的句子。我为此尝试了 query_string,尽管它没有返回所需的句子。

询问:

{
  "_source": "doc.sent", 
  "query": {
    "query_string" : {
      "query" : "/food.*table/",
      "default_field" : "doc.sent"
     }
  }
}

例句:

My food is left at the table right now.

标签: regexelasticsearch

解决方案


你不需要正则表达式,但如果你想匹配多个单词或多个模式,你可以使用&符号

交集 与号“&”以一种它们都必须匹配的方式连接两个模式。对于字符串“aaabbb”:

aaa.+&.+bbb # match aaa&bbb # no match 使用这个特性通常意味着你应该重写你的正则表达式。

使用 INTERSECTION 或 ALL 标志启用。

出于您的目的,查询将如下所示:

{
  "_source": "doc.sent", 
  "query": {
    "query_string" : {
      "query" : "food&table",
      "default_field" : "doc.sent"
     }
  }
}

或者你也可以使用ANDorOR运算符

   {
      "_source": "doc.sent", 
      "query": {
        "query_string" : {
          "query" : "food AND table",
          "default_field" : "doc.sent"
         }
      }
    }

推荐阅读