我是Elasticsearch的新手。我需要编写查询以在其中一个字段中找到正则表达式匹配项。
如果我在一个字段中寻找正则表达式,那么一切正常(PHP代码):
$data = ['body' => ['query' => ['regexp' => ['abstract' => ".*searchtext.*"]]]];
如果我要查找其中至少一个字段满足正则表达式的文档怎么办?
此查询:
$data = [
'body' => [
'query' => [
'multi_match' => [
'query' => 'searchtext',
'fields' => [
'type',
'title',
'abstract',
'body_text'
]
]
]
]
];
仅查找单词“ searchtext”完全匹配的文档。
关于托马斯
答案 0 :(得分:1)
找到答案:
$data = [
'body' => [
'query' => [
'bool' => [
'should' => [
['regexp' => ['type' => ".*searchtext.*"]],
['regexp' => ['title' => ".*searchtext.*"]],
['regexp' => ['abstract' => ".*searchtext.*"]],
['regexp' => ['body_text' => ".*searchtext.*"]],
]
]
]
]
];
不如multi_match查询那么优雅,但可以。