Elasticsearch从复杂结构中获取嵌套值

时间:2017-11-28 09:16:38

标签: elasticsearch

我的问题与Elasticsearch - get nested fields

有点类似

但我的数据更复杂,因此在我的情况下,嵌套字段是一系列dicts 关键字

keywords = [{'key': key1, 'value': value1}, {'key': key2, 'value': value2}, ...]

有什么方法可以在_source中以某种方式只获取一些值,例如我需要key = key2的值?

或唯一的方法是获取所有关键字并在我的脚本中手动解析它?

1 个答案:

答案 0 :(得分:0)

这可以通过使用Elasticsearch Term Query来实现。

假设您的索引的文档类似于:

....
"key_list" : [
    {"key" : "key1", "value" : "value1"},
    {"key" : "key2", "value" : "value2"}, 
    ....
]

然后你可以查询如下:

GET index/_search
{
    "query": {
        "term" : { "key_list.key" : "key2" } 
    }
}

并且,为了只获取结果中的特定值而不是整个响应JSON,您可以尝试使用filter_path子句。

GET index/_search?pretty&filter_path=hits.hits._source.*.value
{
    "query": {
        "term" : { "key_list.key" : "key2" } 
    }
}