我在使用查询字符串正则表达式查询字段(标题)时遇到问题。

这有效:“标题:/ test /”
这不是:“标题:/ ^ test $ /”

但是他们提到它受支持https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html#regexp-syntax

我的目标是进行完全匹配,但此匹配不应是部分匹配,而应匹配整个字段值。

有人知道这里可能有什么问题吗?

最佳答案

documentation



您正在使用 anchor ^$,不支持这些 anchor ,因为没有必要,再次从文档中获取



如果您正在寻找phrase query类型的匹配项,则可以像这样使用double quotes

{
  "query": {
    "query_string": {
      "default_field": "title",
      "query": "\"test phrase\""

    }
  }
}

但这也将匹配标题如测试短语someword的文档

如果您希望完全匹配,则应查找term queries,将标题字段映射为"index" : "not_analyzed",或者可以将keyword analyzerlowercase filter结合使用以区分大小写。您的查询如下所示
{
  "query": {
    "term": {
      "title": {
        "value": "my title"
      }
    }
  }
}

这将使完全匹配

07-24 09:39
查看更多