我正在使用ElasticSearch,并希望在搜索查询的聚合结果上获得突出显示的字段。
我不希望获得搜索查询的结果,因此我将size
保留为0
,这只会给我汇总的结果。
现在我想在聚合结果上应用荧光笔,但这不起作用。我使用术语聚合器和顶级聚合器作为子聚合器。在ES文档中,他们提到了top-hits聚合器支持突出显示。
我的查询结构如下:
{
size:0,
query:{
.......
},
aggregation:{
name-of-agg:{
term:{
....
},
aggregation:{
name-of-sub-agg:{
top-hits:{
....
}
}
}
},
highlight:{
fields:{
fieldname:{
}
}
}
}
}
答案 0 :(得分:0)
您必须在highlight
聚合属性中设置top_hits
(不在aggregation
内)。
这是一个有用的最小例子:
echo create index
curl -XPUT 'http://127.0.0.1:9010/files?pretty=1' -d '
{
"settings": {
}
}'
echo create type
curl -XPUT 'http://127.0.0.1:9010/files/_mapping/file?pretty=1' -d'
{
"properties":{
"fileName":{
"type":"string",
"term_vector":"with_positions_offsets"
}
}
}
'
echo insert files
curl -XPUT 'http://127.0.0.1:9010/files/file/1?pretty=1' -d'
{
"fileName":"quick brown fox"
}
'
echo flush
curl -XPOST 'http://127.0.0.1:9010/files/_flush?pretty=1'
echo search brown tophits
curl -XGET 'http://127.0.0.1:9010/files/file/_search?pretty=1' -d '
{
"size" : 0,
"query":{
"match":{
"fileName":"brown"
}
},
"aggregations" : {
"docs" : {
"top_hits" : {
"highlight": {
"fields": {
"fileName": {}
}
}
}
}
}
}'