elasticsearch - 使用涉及空格的正则表达式进行搜索

use*_*854 7 regex elasticsearch

我想在elasticsearch中使用涉及空格的正则表达式执行搜索。我已经将我的字段设置为 not_analyzed。它的映射就像

"type1": {
   "properties": {
      "field1": {
         "type": "string",
         "index": "not_analyzed",
         "store": true
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

我输入两个值进行测试,

"field1":"XXX YYY ZZZ"
"field1":"XXX ZZZ YYY"
Run Code Online (Sandbox Code Playgroud)

我使用正则表达式查询 /XXX YYY/ 做了一些案例
(我想使用此查询来查找记录 1 但不是记录 2)

{
    "query": {
        "query_string": {
           "query": "/XXX YYY/"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但它返回 0 结果。

但是,如果我不使用正则表达式进行搜索(不使用正斜杠“/”),则将返回 record1 和 record2。

在elasticsearch中,我无法使用涉及空格的正则表达式查询进行搜索吗?

Jen*_*olm 1

您需要的是一个“术语”查询,它不会通过将搜索查询分解为更小的部分来标记它有关术语查询的更多信息,请参见:https://www.elastic.co/guide/en/elasticsearch/reference/2.0/query-dsl-term-query.html

有一种特殊的术语查询允许您使用称为正则表达式查询的正则表达式。这也应该匹配任何空格: https: //www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html