【问题标题】:Elasticsearch query for what fields have a given type?Elasticsearch 查询哪些字段具有给定类型?
【发布时间】:2015-11-25 04:33:49
【问题描述】:

我有一个带有多个索引的 elasticsearch(1.7 版)集群。每个索引都有多个 doc_types,每个索引都有多种类型的字段。我想获取给定字段类型的字段名称列表。这将是一个必要的嵌套列表。例如,我想查询字段类型“string”,并返回 {index1: {doc_type1.1: [field1.1.1, field1.1.2], ...} - 这个嵌套字典的叶子只有具有给定类型的那些字段。所以这个查询的命中不是文档,而是集群映射的一个子集。这可以使用 Elasticsearch 吗?

一种解决方案:我知道我可以使用 Python 将映射作为字典获取,然后处理映射字典以恢复此嵌套列表。但我认为应该有一种弹性搜索方式来做到这一点,而不是 Python 解决方案。在我对文档的搜索中,我一直在寻找按 doc_type 过滤的“类型过滤器”,而不是字段类型。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    目前没有办法实现这一点。 _mapping 端点将返回请求映射类型的所有字段。

    但是,如果您的字段具有暗示其类型的特殊命名约定,例如name_str(“姓名”的字符串字段),age_int(“年龄”的整数字段),则可能有一种方法,在这种情况下,您可以在 _mapping 调用中使用 response filtering 并仅检索以 _str 结尾的字段:

    curl -XGET localhost:9200/yourindex/_mapping/yourtype?filter_path=*_str
    

    【讨论】:

    • 嗯,我没有索引任何东西,只是探索/使用集群,但你的建议对未来的索引很有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    相关资源
    最近更新 更多