我想在 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/