regex - elasticsearch - 使用涉及空间的正则表达式搜索

标签 regex elasticsearch

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

"type1": {
   "properties": {
      "field1": {
         "type": "string",
         "index": "not_analyzed",
         "store": true
      }
   }
}

我输入两个值进行测试,
"field1":"XXX YYY ZZZ"
"field1":"XXX ZZZ YYY"

我使用正则表达式查询/XXX YYY/做了一些案例(我想用这个查询来查找记录 1 但不是记录 2)
{
    "query": {
        "query_string": {
           "query": "/XXX YYY/"
        }
    }
}

但它返回 0 结果。

但是,如果我在不使用正则表达式(没有正斜杠“/”)的情况下进行搜索,则会返回 record1 和 record2。

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

最佳答案

您需要的是一个“术语”查询,它不会 tokenise将搜索查询分解为更小的部分。更多关于这里的术语查询: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

关于regex - elasticsearch - 使用涉及空间的正则表达式搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32934029/

相关文章:

javascript - 嵌套元素中的文本替换

elasticsearch - 如何结合multi_match和两个 bool 过滤器

java - 如何使用Java代码查询具有相同字段名称ElasticSearch的两种类型

python - 使用 python 正则表达式从 URL 中分离 Facebook URL 用户 ID

r - Grep 变量并将结果存储在 R 中的向量中

regex - 使用 ACK 作为过滤器

javascript - 正则表达式 JavaScript 需要字符串双引号

elasticsearch - 如何在Elasticsearch 2.x中使用 “update_by_query”更新数据?

ElasticSearch:聚合一组收集的结果

elasticsearch - 远程查询未返回的Elasticsearch构面