Kibana 和 _source 字段,Elastic 版本 6.7

Kibana and the _source field, Elastic Version 6.7

我想要一个基于我的索引的简单饼图。然而,结果中的字段似乎嵌入在 _source 字段中,不能在 Kibana 中的 Terms 聚合中使用。

示例结果如下所示:

现在,如果我禁用映射中的 _source 字段:

我没有得到任何字段:

但是,Kibana Discover 页面列出了可用字段,ES 结果永远不会返回这些字段 - 当启用了 _source 时。

Index Mapping如下图:

{
  "settings": {
    "analysis": {
      "filter": {
        "filter_stemmer": {
          "type": "stemmer",
          "language": "english"
        }
      },
      "analyzer": {
        "tags_analyzer": {
          "type": "custom",
          "filter": [
            "standard",
            "lowercase",
            "filter_stemmer"
          ],
          "tokenizer": "standard"
        }
      }
    }
  },
  "mappings": {
    "schemav1": {
      "properties": {
      "user_id": {
            "type": "text"
        },

        "technician_query": {
          "analyzer": "tags_analyzer",
          "type": "text"
        },
        "staffer_queries": {
          "analyzer": "tags_analyzer",
          "type": "text"
        },
        "status":{
            "type":"text"
        }
      }
    }
  }
}

好的,原因很简单,为了在聚合中使用您的字段,您需要有一个 keyword 版本。您不能汇总 text 个字段。

将您的映射转换为:

  "mappings": {
    "schemav1": {
      "properties": {
        "user_id": {
            "type": "keyword"
        },

        "technician_query": {
          "analyzer": "tags_analyzer",
          "type": "text",
          "fields": {
            "raw": {
              "type": "keyword"
            }
          }
        },
        "staffer_queries": {
          "analyzer": "tags_analyzer",
          "type": "text",
          "fields": {
            "raw": {
              "type": "keyword"
            }
          }
        },
        "status":{
            "type":"keyword"
        }
      }
    }
  }

因此,user_idstatus现在是keywordtechnician_query.rawstaffer_queries.raw也是`关键字字段,您可以在术语聚合中使用它们,因此在饼图中也是如此。