我在使用查询字符串正则表达式查询字段(标题)时遇到问题。
这有效:“标题:/ 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 analyzer与lowercase filter结合使用以区分大小写。您的查询如下所示{
"query": {
"term": {
"title": {
"value": "my title"
}
}
}
}
这将使与完全匹配