进行搜索时,Elasticsearch会返回包含各种元信息的数据结构。
实际结果集包含在从数据库返回的JSON结果中的“命中”字段中。
Elasticsearch是否有可能只返回所需的数据(然后是“点击”字段的内容),而不是嵌入到所有其他元数据中?
我知道我可以将结果解析为JSON并将其解压缩,但我不希望复杂性,麻烦,性能受到影响。
谢谢!
以下是Elasticsearch返回的数据结构示例。
{
"_shards":{
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits":{
"total" : 1,
"hits" : [
{
"_index" : "twitter",
"_type" : "tweet",
"_id" : "1",
"_source" : {
"user" : "kimchy",
"postDate" : "2009-11-15T14:12:12",
"message" : "trying out Elastic Search"
}
}
]
}
}
答案 0 :(得分:17)
即使您无法提取结果,也可以至少过滤结果。 " common options" REST API的页面解释了" filter_path"选项。这使您只能过滤您感兴趣的树的部分。树结构仍然相同,但没有额外的元数据。
我通常添加查询选项:
&filter_path=hits.hits.*,aggregations.*
文档没有说明这一点,使你的查询更快(我怀疑它确实如此),但至少你只能返回有趣的部分。
答案 1 :(得分:10)
不,此时此刻不可能。如果解析的性能和复杂性是主要问题,您可能需要考虑使用不同的客户端:例如java client或Thrift plugin。