elasticsearch - Elasticsearch 一个用于多个字段的正则表达式
问题描述
我是 Elasticsearch 的新手。我需要编写查询以在其中一个字段中查找正则表达式匹配。
如果我在一个字段中寻找正则表达式,一切正常(PHP 代码):
$data = ['body' => ['query' => ['regexp' => ['abstract' => ".*searchtext.*"]]]];
如果我想查找至少一个字段满足正则表达式的文档怎么办?
这个查询:
$data = [
'body' => [
'query' => [
'multi_match' => [
'query' => 'searchtext',
'fields' => [
'type',
'title',
'abstract',
'body_text'
]
]
]
]
];
仅查找与整个单词“searchtext”匹配的文档。
问候,托马斯
解决方案
找到答案:
$data = [
'body' => [
'query' => [
'bool' => [
'should' => [
['regexp' => ['type' => ".*searchtext.*"]],
['regexp' => ['title' => ".*searchtext.*"]],
['regexp' => ['abstract' => ".*searchtext.*"]],
['regexp' => ['body_text' => ".*searchtext.*"]],
]
]
]
]
];
不像 multi_match 查询那么优雅,但是可以。
推荐阅读
- java - 无法在 VS 代码上运行 Tomcat 服务器
- apache - 在apache中获取客户端IP
- javascript - 我如何获得类(css)数组的索引
- azure - Azure 服务终结点和专用终结点
- html - ```高度:100vh```和页面底部的白色边距的意外行为
- reactjs - ReactJs:如何在从不同设备或单个设备填写表单时增加用户数量作为 id
- ios - IndexPath 返回 nil,仅在 iOS 13.5.1 上用于 indexPathForRowAtPoint
- c# - 如果选中 DataGridCheckBoxColumn,则从 DataGrid 获取数据
- javascript - Discord.js:尝试使用 discord.js 机器人在两个不同的服务器之间创建消息系统
- flutter - 未使用局部变量的值