我的问题与Elasticsearch - get nested fields
有点类似但我的数据更复杂,因此在我的情况下,嵌套字段是一系列dicts 关键字:
keywords = [{'key': key1, 'value': value1}, {'key': key2, 'value': value2}, ...]
有什么方法可以在_source中以某种方式只获取一些值,例如我需要key = key2的值?
或唯一的方法是获取所有关键字并在我的脚本中手动解析它?
答案 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" }
}
}