【问题标题】:Elasticsearch get nested value from complex structureElasticsearch 从复杂结构中获取嵌套值
【发布时间】:2017-11-28 18:10:21
【问题描述】:

我的问题有点类似于Elasticsearch - get nested fields

但我的数据更复杂,所以在我的例子中,嵌套字段是字典数组keywords

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

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

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

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    这可以通过使用 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" } 
        }
    }
    

    【讨论】:

    • 有趣的解决方案,但它对我不起作用。可能是因为某些 subdicts 有额外的参数?
    • 是的,如果您可以发布索引文档的部分内容,这将有助于清晰。
    • 哦,对不起,没关系,它只是复数,也可能有子数组和子字典,所以原来的问题仍然有效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 2016-08-19
    • 2013-10-20
    相关资源
    最近更新 更多