我有文档,有 1000 行,在弹性搜索中索引,我正在尝试使用 Kibana 搜索这些文档。它工作正常。但是,由于 Kibana 在搜索结果中返回完整的文档,用户必须滚动很多才能在文档中查看其搜索词。
如何使 Kibana 只返回搜索词周围的几行而不是完整文档?
例如,如果文档中的可搜索文本是
那是最好的时代,这是最坏的时代,这是智慧的时代,这是愚蠢的时代,这是信仰的时代,这是怀疑的时代,这是光明的季节,这是黑暗的季节,这是希望的春天,这是绝望的冬天。 ——查尔斯·狄更斯, 双城记
因此,如果我正在搜索单词信念,而不是返回整个段落,我只想在它之前和之后返回几个单词(对于大型文档,只有几行)。
是的,您可以使用_source
从搜索的文档中检索所需的字段。这是一个例子
我在索引movies
有此文档
{
"_index" : "movies",
"_type" : "movie",
"_id" : "58559",
"_score" : 1.0,
"_source" : {
"id" : "58559",
"title" : "Dark Knight, The",
"year" : 2008,
"genre" : [
"Action",
"Crime",
"Drama",
"IMAX"
]
}
}
当我搜索此文档并且只需要拉标题时,这就是我的做法。
GET /movies/_search?pretty
{
"query":{
"match":{
"year": "2008"
}
},
"_source":[
"title"
]
}
我搜索了year
,结果文档只显示了我想要的title
。这是上述查询的响应
{
"_index" : "movies",
"_type" : "movie",
"_id" : "58559",
"_score" : 1.0,
"_source" : {
"title" : "Dark Knight, The"
}
}