我试图从嵌套查询的点击返回突出显示。根据文档,这是可能的。文档说:
父/子和嵌套功能允许返回在不同范围内具有匹配项的文档。在嵌套的情况下,基于嵌套内部对象中的匹配返回文档。 内部命中功能返回搜索响应中每次搜索命中的其他嵌套命中,导致搜索命中在不同范围内匹配。 可以通过在嵌套,has_child或has_parent查询和过滤器上定义inner_hits定义来使用内部命中。 内部命中还支持以下每个文档功能:
'突出显示','解释来源','过滤','脚本字段','文档值','字段','包含版本'。
但是我无法根据以下映射和查询来实现此功能。任何人都可以解释我出错的原因和地点吗?
注意:我具体指的是嵌套类型而不是parent_child。
我发现只有在将referenceIdValue和ReferenceIdType从关键字更改为文本时才有效,但显然这不是我想要的。 ES文档说:
“字段名称支持通配符表示法。例如,使用comment_ *将导致与表达式匹配的所有文本和关键字字段(以及5.0之前的版本中的字符串)将被突出显示。请注意,不会突出显示所有其他字段。 “ https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-highlighting.html#_highlight_query我认为这可能是一个错误?
非常感谢。
映射:
{
"entity": {
"dynamic_templates": [{
"catch_all": {
"match_mapping_type": "*",
"mapping": {
"type": "text",
"store": true,
"analyzer": "phonetic_index",
"search_analyzer": "phonetic_query"
}
}
}],
"_all": {
"enabled": false
},
"properties": {
"entityName": {
"type": "text",
"store": true,
"analyzer": "indexed_index",
"search_analyzer": "indexed_query",
"referenceIds": {
"type": "nested",
"properties": {
"referenceIdValue": {
"type": "keyword",
"norms": true,
"store": true
},
"referenceIdType": {
"type": "keyword",
"store": true,
"norms": true
}
}
},
"isPublished": {
"type": "boolean",
"store": true
}
}
}
}
查询:
curl -XGET "127.0.0.1:9200/test/entity/_search?pretty" -d"
{
"query": {
"bool": {
"filter": {
"term": {
"isPublished": "true"
}
},
"must": [
[{
"nested": {
"query": {
"bool": {
"must": [
[{
"term": {
"referenceIds.referenceIdValue": "123456"
}
}, {
"term": {
"referenceIds.referenceIdType": "ENCO"
}
}]
]
}
},
"inner_hits": {
"highlight": {
"fields": {
"referenceIds.referenceIdValue": {},
"referenceIds.referenceIdType": {}
}
}
},
"path": "referenceIds"
}
}]
]
}
}
}"
结果:
{
"took": 99,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 14.319202,
"hits": [{
"_index": "test",
"_type": "entity",
"_id": "3423631",
"_score": 14.319202,
"_source": {
"entityName": "Test Entity",
"referenceIds": [{
"referenceIdValue": "AAAABBBB",
"referenceIdType": "SULA"
}, {
"referenceIdValue": "123456",
"referenceIdType": "ENCO"
}]
},
"inner_hits": {
"referenceIds": {
"hits": {
"total": 1,
"max_score": 14.319202,
"hits": [{
"_nested": {
"field": "referenceIds",
"offset": 3
},
"_score": 14.319202,
"_source": {
"referenceIdValue": "123456",
"referenceIdType": "ENCO"
}
}]
}
}
}
}]
}
}
答案 0 :(得分:0)
我认为这是因为在查询的突出显示部分,您需要设置相对于嵌套文档的路径。 试试这个:
"inner_hits": {
"highlight": {
"fields": {
"referenceIdValue": {},
"referenceIdType": {}
}
}
},