【问题标题】:Tire and Elasticsearch SearchRequestFailed SearchPhaseExecutionException轮胎和 Elasticsearch SearchRequestFailed SearchPhaseExecutionException
【发布时间】:2012-09-06 20:49:42
【问题描述】:

我使用弹性搜索实现了轮胎。 在本地,我的项目运行良好,搜索索引也没有问题。 但是当我将我的应用程序部署到我的服务器时,我收到了以下错误消息:

Tire::Search::SearchRequestFailed (500 : {"error":"SearchPhaseExecutionException[未能执行阶段 [query_fetch],完全失败;shardFailures {[hDTlT_K_Sl6P5regwKNJyg][articles] [0]: QueryPhaseExecutionException[[articles][ 0]: query[ConstantScore(NotDeleted(cache(_type:article)))],from[0],size[25],sort[!]: Query Failed [Failed to execute main query]]; 嵌套: IOException[Can '不对每个文档有多个值或每个字段有多个标记的字符串类型进行排序]; }]","status":500}):

我相信我的文章存储在我的索引中,因为创建它们时我没有收到任何错误。我也尝试用这个手动运行相同的查询:

curl -XPOST 'http://localhost:9200/articles/article/_search' -d '{ 
    "sort": [ 
        { 
            "supplier_code": "desc" 
        } 
    ] 
}'

我得到了几乎相同的回应:

{"error":"SearchPhaseExecutionException[未能执行阶段 [query_fetch],完全失败;shardFailures {[hDTlT_K_Sl6P5regwKNJyg][articles][0]:QueryPhaseExecutionException[[articles][0]:query[ConstantScore(NotDeleted(cache (_type:article)))],from[0],size[10],sort[!]: Query Failed [Failed to execute main query]]; nested: IOException[Can't sort on string types with more than one每个文档的值,或每个字段多个标记]; }]","status":500}

那么任何人都可以指出我正确的方向吗? 我复制了我在本地机器上使用的确切 sam 配置。 太奇怪了,它在服务器上不起作用。

我在这里错过了什么?

提前非常感谢

编辑:

我发现我尝试执行的排序导致了问题。 这也与我的文章对象到弹性搜索的映射有关。

与我试图排序的字段有关的东西放在 not_analyzed 我是对的吗? 如果我只映射一个字段,是否需要显式映射所有字段?

【问题讨论】:

    标签: ruby-on-rails exception elasticsearch tire


    【解决方案1】:

    这是实际问题:无法对每个文档具有多个值或每个字段多个标记的字符串类型进行排序。这意味着两件事之一:要么你有多个每个文档的supplier_code 字段或supplier_code 字段由分析器分析并生成多个标记(默认分析器会对某些字符串执行此操作)。 Elasticsearch 只能对每条记录包含不超过一个值的字段进行排序。因此,如果您有多个字段,则需要提供另一个排序键,或者如果您只有一个字段,则需要将其设置为 not_analyzed,或者使用其他不产生多个标记的分析器。

    【讨论】:

    • 感谢您的解释,我可以使用什么样的分析器来使用该字段进行搜索和排序?另外,如果我添加一些映射,是否需要显式映射模型的所有字段?
    • 这取决于您的搜索用例。任何只产生一个令牌的分析器都可以。如果您的用例需要将字段的内容拆分为多个标记,您可以使用Multi Field 对该字段进行两次索引。您只能映射一个字段,而使所有其他字段保持动态。但是,如果字段已经动态映射,则需要重新创建索引。
    猜你喜欢
    • 2012-04-30
    • 2013-09-26
    • 2012-03-29
    • 1970-01-01
    • 2013-07-23
    • 2014-10-24
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    相关资源
    最近更新 更多