限制从弹性搜索返回的数据的字段长度

时间:2015-01-22 06:43:56

标签: javascript elasticsearch

我正在使用弹性搜索的Javascript Api来设置后端。我有一个很长的字段文本。是否有可能获得该领域的一部分? 。

我尝试使用弹性搜索的搜索突出显示。但是工作!!

2 个答案:

答案 0 :(得分:3)

如果您只对匹配查询字词附近的搜索结果片段感兴趣,则可以使用传递highlight参数来限制返回的数据长度。

GET _search
{
    "query" : {...},
    "highlight" : {
        "fields" : {
            "<name of your field>" : {
                "fragment_size" : <desired length>,
                "no_match_size" : <desired length>,
                "number_of_fragments" : 1,
                "pre_tags" : [""],
                "post_tags" : [""],

            }
        }
    }
}

pre_tagspost_tags设置为空字符串会阻止ElasticSearch将匹配的文本与标记包装在一起。如果查询与<name_of_your_field>中的任何内容都不匹配,则会返回字段开头的代码段。

答案 1 :(得分:1)

我可以建议两种方法。

  1. 您可以探索在文档中再存储一个字段的可能性,该字段代表前30个字符所需字段的较短版本。这样可以更快地返回结果,但需要一些工作。
  2. 您可以使用脚本字段,它允许您在您感兴趣的任何字段上运行groovy脚本,在您的情况下是一个简单的子字符串调用:https://www.elastic.co/guide/en/elasticsearch/reference/1.4/search-request-script-fields.html