Elasticsearch突出显示聚合字段的问题

时间:2016-02-10 02:46:44

标签: elasticsearch highlight

我正在使用ElasticSearch,并希望在搜索查询的聚合结果上获得突出显示的字段。

我不希望获得搜索查询的结果,因此我将size保留为0,这只会给我汇总的结果。

现在我想在聚合结果上应用荧光笔,但这不起作用。我使用术语聚合器和顶级聚合器作为子聚合器。在ES文档中,他们提到了top-hits聚合器支持突出显示。

我的查询结构如下:

{
    size:0,
    query:{
        .......
    },
    aggregation:{
        name-of-agg:{
            term:{
                ....
            },
            aggregation:{
                name-of-sub-agg:{
                    top-hits:{
                        ....
                    }
                }
            }
        },
        highlight:{
            fields:{
                fieldname:{

                }
            }
        }
    }
}

1 个答案:

答案 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": {}
          }
        }
      }
    }
  }
}'