我正在使用elasticsearch来索引我的文档。
是否可以指示它只返回特定的字段,而不是它存储的整个json文档?
发布于 2012-03-08 00:39:49
是的,使用更好的选项source filter。如果你用JSON进行搜索,结果会是这样的:
{
"_source": ["user", "message", ...],
"query": ...,
"size": ...
}
在ES 2.4和更早版本中,您还可以使用fields option to the search API
{
"fields": ["user", "message", ...],
"query": ...,
"size": ...
}
这在ES 5+中已弃用。不管怎么说,源过滤器更强大!
发布于 2017-04-14 23:40:32
对于ES版本5.X及更高版本,您可以执行如下ES查询:
GET /.../...
{
"_source": {
"includes": [ "FIELD1", "FIELD2", "FIELD3" ... " ]
},
.
.
.
.
}
发布于 2017-03-29 22:57:32
在Elasticsearch 5.x中,上述方法已被弃用。您可以使用_source方法,但在某些情况下,存储字段可能更有意义。例如,如果您有一个文档,其中包含标题、日期和非常大的内容字段,则您可能希望只检索标题和日期,而不必从大型_source字段中提取这些字段:
在本例中,您将使用:
{
"size": $INT_NUM_OF_DOCS_TO_RETURN,
"stored_fields":[
"doc.headline",
"doc.text",
"doc.timestamp_utc"
],
"query":{
"bool":{
"must":{
"term":{
"doc.topic":"news_on_things"
}
},
"filter":{
"range":{
"doc.timestamp_utc":{
"gte":1451606400000,
"lt":1483228800000,
"format":"epoch_millis"
}
}
}
}
},
"aggs":{
}
}
有关如何索引存储字段的信息,请参阅文档。总是很高兴能得到赞成票!
https://stackoverflow.com/questions/9605292
复制相似问题