我试图在Elasticsearch中做一些突出显示,并且我很难获得输出我喜欢的多值字段。这就是我现在正在做的事情:
[[{'values': [[111, 121], [112, 122], [113, 123]], 'the_geom': (999, 999)}, {'values': [[211, 221], [212, 222], [213, 223]], 'the_geom': (998, 998)}], [{'values': [[1111, 1121], [1112, 1122], [1113, 1123]], 'the_geom': (997, 997)}, {'values': [[1211, 2211], [1212, 2212], [1213, 2213]], 'the_geom': (996, 996)}]]
这给了我(省略了不必要的字段):
{ "query" : { "match": { "nameSet": "test" } },
"highlight" : { "fields" : { "*": {"number_of_fragments": 0 } } }
}
我想要的是完整的数组,而不仅仅是匹配的项目。在这个例子中,我想" TEST"要强调和#34; NAME"存在但不强调。
"hits" : [ {
...
"_source" : {
"nameSet" : ["TEST", "NAME"]
},
"highlight" : {
"nameSet" : [ "<em>TEST</em>" ]
}
},
...
任何方式纯粹在ES中这样做?
感谢。
答案 0 :(得分:0)
在高亮对象内部,您可以使用前置和后置标签。例如:
"hits" : [ {
...
"_source" : {
"nameSet" : ["TEST", "NAME"]
},
"highlight" : {
"pre_tags": "<em>",
"post_tags": "</em>",
"nameSet" : [ "<em>TEST</em>", "NAME" ]
}
},
...