首页 > 解决方案 > Kibana:如何仅显示搜索词周围的有限行/单词,而不是完整文档?

问题描述

我有文档,有 1000 行,在弹性搜索中编入索引,我正在尝试使用 Kibana 搜索这些文档。它工作正常。但是由于 Kibana 在搜索结果中返回完整文档,用户必须滚动很多才能在文档中看到他们的搜索词。

我怎样才能让 Kibana 只返回围绕搜索词的几行而不是完整的文档?

例如,如果我的文档中的可搜索文本是

那是最好的时代,那是最坏的时代,那是智慧的时代,那是愚蠢的时代,那是信仰的时代,那是怀疑的时代,那是光明的季节,那那是黑暗的季节,那是希望的春天,那是绝望的冬天。——查尔斯狄更斯,两个城市的故事

因此,如果我正在搜索单词相信,而不是返回完整的段落,我只想在它之前和之后返回几个单词(对于大型文档,只有几行)。

标签: elasticsearchkibana-6

解决方案


是的,您可以使用_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"
    }
  }

推荐阅读