elasticsearch - Kibana:如何仅显示搜索词周围的有限行/单词,而不是完整文档?
问题描述
我有文档,有 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"
}
}