3

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

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

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

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

那么如何使用一个字段来处理方面,然后使用另一个字段来显示值呢?

4

2 回答 2

0

我正在使用下面的行来显示字段。它仅适用于网格,但不适用于构面。仍然是从 id 获取的方面,而不是标签。

fields: [{
    id: 'name_first', 
    'label': 'First Name'
}]
于 2014-04-14T19:45:16.067 回答
-1

Try adding a fields clause to your query, as follows:

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

Note that in order to return field values in search results, you need to actually store them in ES. So you need to either store the _source (this happens by default, unless you override it with "_source" : {"enabled" : false}, or set "store": "yes" for that field in your mapping.

于 2013-10-08T06:06:32.267 回答