如何在弹性搜索中仅获取响应中的特定字段?

时间:2015-11-17 03:10:22

标签: elasticsearch

我的文档中包含太多字段。但我只需要在我的回复中出现一些选定的。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

通常不建议指定请求fields

最佳做法是使用source filtering并指定要从文档来源检索的字段。此功能更加强大,因为您不仅可以指定要包含的字段,还可以指定要排除的字段。您还可以使用模式,例如{ "query": { "match": { "title": "text" } }, "_source": [ "title", "summary" ] } 作为您的字段名称。

使用源过滤的最基本方法是指定所需的字段:

    library(ggplot2)
    factors <- c("A", "B", "C", "D", "B", "A", "C", "B", "D", "D")
    data <- data.frame(n=1:10, a= runif(10, 1, 5), b=runif(10, 1, 5),c=runif(10, 1, 5))
    gg_data <- melt(data, id.vars="n", variable.name="var")
    gg_data$alp <- rep(factors, 3)
    gg_data1 <- melt(data.frame(n=1:10, a= runif(10, 2, 3), b=runif(10, 4, 5),c=runif(10, 3, 4)), id.vars="n", variable.name="var")

    #this does not work
    ggplot(data= gg_data, aes(x=n, y=value, fill=alp))+geom_bar(stat="identity")+ facet_grid( var ~ ., scale="free_y")+geom_line(data= gg_data1, aes(x= n, y=value))

    #this gives a weird output
    gg_data1$alp <- rep(factors, 3)
    ggplot(data= gg_data, aes(x=n, y=value, fill=alp))+geom_bar(stat="identity")+ facet_grid( var ~ ., scale="free_y")+geom_line(data= gg_data1, aes(x= n, y=value))

    #this works the way I want it to, don't know why.
    gg_data1$alp <- "A"
    ggplot(data= gg_data, aes(x=n, y=value, fill=alp))+geom_bar(stat="identity")+ facet_grid( var ~ ., scale="free_y")+geom_line(data= gg_data1, aes(x= n, y=value))