为了演示这个问题,下面是一个使用单个文档动态创建的索引:
PUT /test_highlight_number/_doc/1
{
"id": 1,
"names": ["john 1","john 2", "john 3", "john 4", "john 5", "john 6", "john 7", "john 8"]
}
运行以下搜索时
GET /test_highlight_number/_search
{
"query": {
"match": {
"names": {
"query": "john"
}
}
},
"highlight": {
"fields": {
"names": {}
}
}
}
在hits的highlight键中,我得到的响应仅突出显示了8个匹配名称中的5个。是否有方法告诉elasticsearch根据查询返回字段的所有突出显示?
{
"took" : 12,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.55034834,
"hits" : [
{
"_index" : "test_highlight_number",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.55034834,
"_source" : {
"id" : 1,
"names" : [
"john 1",
"john 2",
"john 3",
"john 4",
"john 5",
"john 6",
"john 7",
"john 8"
]
},
"highlight" : {
"names" : [
"<em>john</em> 1",
"<em>john</em> 2",
"<em>john</em> 3",
"<em>john</em> 4",
"<em>john</em> 5"
]
}
}
]
}
}
1条答案
按热度按时间2cmtqfgy1#
这是因为您没有指定number_of_fragments参数。它默认为
5
。您应该阅读突出显示设置部分。如果你想检索所有与查询匹配的片段,你的查询应该是这样的: