gpt4 book ai didi

elasticsearch - Elasticsearch突出显示:自定义 “multi-match”上的 “_all”查询-使用 “copy_to”创建的字段

转载 作者:行者123 更新时间:2023-12-02 22:37:38 25 4
gpt4 key购买 nike

(Elasticsearch 5.2.2)

我在突出显示以正常工作方面遇到了一些麻烦。
我的映射具有2个自定义创建的_all-fields myall1 myall2 ,它们是通过 copy_to 创建的:

"mytype": {
"_all": {
"enabled": false
},
"properties": {
"myall": {
"type": "text",
"analyzer": "standard",
"store": true
},
"myall2": {
"type": "text",
"analyzer": "standard",
"store": true
},
"field1": {
"type": "text",
"copy_to": "myall1",
"analyzer": "keyword"
},
"field2": {
"type": "text",
"copy_to": "myall2",
"analyzer": "keyword"
}
}

文档将如下所示:
{
"field1": "example text",
"field2": "another text"
}

现在,我正在运行 multi_match -查询,该查询将 myall1 提高了3:
POST /myindex/mytype/_search
{
"query": {
"bool": {
"must": {
"multi_match": {
"fields": ["myall1^3", "myall2"],
"type": "cross_fields",
"query": "example text",
"operator": "and"
}
}
}
}
}

效果很好。问题是我无法在结果中突出显示原始源字段。
我将以下内容添加到查询中,方法与在ES-docs“_all示例”中所做的相同:
  ,
"highlight": {
"pre_tags": ["<span class='highlight'>"],
"post_tags": ["</span>"],
"fields": {
"*": {"require_field_match": false}
}
}

这仅使我突出显示“myall1”和“myall2”,而不是原始字段“field1”和“field2”。

如果我使用_all-field做类似的事情,那么一切都会按预期进行。
主要区别在于:我使用的是multi_match,而示例使用的是query_string。
使用“store”:true和“analyzer”:“standard”并没有帮助。

由于我的实际文档使用的嵌套对象必须是可搜索的,因此我可能无法执行完全不同的查询方法。

这是设计使然还是我缺少了什么?
相反,使用“_all”字段不允许我以尝试实现它的方式提升结果。

最佳答案

固定它。
似乎突出显示原始字段要求他们使用与“复制到”目标字段相同的分析器。
否则,它们根本不会出现。

我之前使用过“analyzer”:“关键字”,因为我不打算在这些字段上进行实际查询。
现在一切正常。

关于elasticsearch - Elasticsearch突出显示:自定义 “multi-match”上的 “_all”查询-使用 “copy_to”创建的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44849279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com