【问题标题】:Limit field length of data returned from elastic search限制弹性搜索返回的数据的字段长度
【发布时间】:2018-10-30 20:13:20
【问题描述】:

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

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

【问题讨论】:

    标签: javascript elasticsearch


    【解决方案1】:

    如果您只对匹配查询词附近的结果的 sn-ps 感兴趣,可以使用传递 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 将匹配的文本与标签包装在一起。如果查询不匹配 &lt;name_of_your_field&gt; 中的任何内容,则返回字段开头的 sn-p。

    【讨论】:

    • 这个答案帮助了我:)!我正在使用附件处理器来索引 pdf 文件。将突出显示应用于搜索后,我可以将搜索结果返回的内容限制在 attachment.content 字段中。谢谢@drs。
    【解决方案2】:

    我可以建议两种方法。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-12
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多