Elasticsearch facet term与label

时间:2013-10-08 05:40:29

标签: elasticsearch faceted-search

我正在编制索引的对象同时具有UserId(GUID)和FullName属性。我想使用UserId进行分面搜索,但显示FullName以使其可读。我不想在FullName上做facet,因为它在技术上不必是唯一的。

现在我正在做这样的事情:

{
    "query": {
        "match_all": {}
    },
    "facets": {
        "userFacet": {
            "terms": {
                "field": "userId"
            }
        }
    }
}

但是它在响应中给了我Guids,我需要点击数据库来查找全名,这显然不是真正的解决方案。

那么我如何使用一个字段来制作构面,然后使用不同的字段来显示值?

2 个答案:

答案 0 :(得分:0)

我使用以下行显示字段。 它只适用于网格,但不适用于网格。 还有一个方面是从id而不是标签。

fields: [{
    id: 'name_first', 
    'label': 'First Name'
}]

答案 1 :(得分:-1)

尝试在查询中添加fields子句,如下所示:

{
    "query": {
        "match_all": {}
    },
    "facets": {
        "userFacet": {
            "terms": {
                "field": "userId"
            }
        }
    },
    "fields": [ "FullName" ]
}

请注意,要在搜索结果中返回字段值,您需要将它们实际存储在ES中。因此,您需要存储_source(默认情况下会发生这种情况,除非您使用"_source" : {"enabled" : false}覆盖它,或者在映射中为该字段设置"store": "yes"