Elasticsearch突出显示数组,如何返回整个数组

时间:2016-07-20 15:20:21

标签: elasticsearch

我试图在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中这样做?

感谢。

1 个答案:

答案 0 :(得分:0)

在高亮对象内部,您可以使用前置和后置标签。例如:

"hits" : [ {
    ...
    "_source" : {
        "nameSet" : ["TEST", "NAME"]
    },
    "highlight" : {
       "pre_tags": "<em>",
       "post_tags": "</em>",
       "nameSet" : [ "<em>TEST</em>", "NAME" ] 
    }
 }, 
 ...