【发布时间】:2023-03-10 11:45:01
【问题描述】:
我刚刚在我的 Windows 机器上下载并安装了最新版本的 Elasticsearch。我做了第一次搜索查询,一切似乎都正常。然而。当我尝试突出显示搜索结果时,我失败了。所以,这就是我的查询的样子:
$params = [
'index' => 'test_index',
'type' => 'test_index_type',
'body' => [
'query' => [
'bool' => [
'should' => [ 'match' => [ 'field1' => '23' ] ]
]
],
'highlight' => [
'pre_tags' => "<em>",
'post_tags' => "</em>",
'fields' => (object)Array('field1' => new stdClass),
'require_field_match' => false
]
]
]
$res = $client->search($params);
总的来说,查询本身运行良好 - 结果被过滤。在我看到的控制台中,所有文档的field1 字段中确实包含“23”值。但是,这些标签 - <em></em> 根本不会添加到结果中。我看到的只是field1 中的原始值,例如“some text 23”、“23 another text”。这不是我期望看到的——“some text <em>23</em>”、“<em>23</em> another text”。那么,这有什么问题,我该如何解决呢?
【问题讨论】:
-
看起来
pre_tags和post_tags可能需要一个数组...您可以尝试将这两个字符串都包装在em中的[]中吗? -
您是否尝试在 PHP 之外运行该查询? (例如使用 Kibana 中的 Sense 插件或简单的
curl命令。)突出显示是否有效? -
@Andrei Stefan。不,我还没有尝试过。
-
@Sam。它没有帮助。我检查了它。我得到过滤结果,但没有任何突出显示
-
@Andrei Stefan。我尝试了 curl,但它在 Windows 上的效果非常糟糕。我无法发出包含 -d 标志和一些 json 正文的请求 - 在这种情况下,在 Windows 上我遇到了一些解析错误。
标签: php elasticsearch elasticsearch-5