为了账号安全,请及时绑定邮箱和手机立即绑定

想要在特定字段可用或不可用的所有索引中按字段排序,如果不可用则避免它

想要在特定字段可用或不可用的所有索引中按字段排序,如果不可用则避免它

PHP
慕尼黑5688855 2023-04-21 10:05:07
目前,根据评分获取结果,但我想做的是我想要一个基于评分 + 字段状态的结果,值为 true/false。如果值为真,则需要导致优先级,但状态字段可能不存在于所有索引中。           "query" => [                  'bool' => [                     'filter' => $filter,                     'must' => [                     "multi_match" => [                        'query' => "$string",                        "type" => "cross_fields",                        'fields' => ['field1','field2','field3'],                        "minimum_should_match" => "80%"                         ]                    ]                  ]            ],            "sort" => [                    "_score",                    [ "status" => ["order" => "desc","unmapped_type" => "boolean"] ]            ],但出现以下错误:[type] => illegal_argument_exception[reason] => Text fields are not optimised for operations that require per-document field data like aggregations and sorting, so these operations are disabled by default. Please use a keyword field instead. Alternatively, set fielddata=true on [status] in order to load field data by uninverting the inverted index. Note that this can use significant memory.有人帮我忽略该字段不可用的索引或解决此问题的任何其他解决方案吗?
查看完整描述

3 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

忘记删除旧的索引映射,只更新正在发生的数据。

当您通过正确的设置遇到以下错误时,以下答案是相关的

文本字段未针对需要每个文档字段数据的操作(如聚合和排序)进行优化,因此默认情况下禁用这些操作。请改用关键字字段。或者,在 [status] 上设置 fielddata=true 以通过反转倒排索引来加载字段数据。请注意,这可能会占用大量内存。

在这种情况下,如果您想消除错误,请启用字段上的字段数据,但要注意它可能会导致性能问题。

您可以在映射中的字段中启用它,order如图所示。

{

  "properties": {

    "order": { 

      "type":     "text",

      "fielddata": true

    }

  }


查看完整回答
反对 回复 2023-04-21
?
皈依舞

TA贡献1851条经验 获得超3个赞

就我而言,我必须使用可聚合{fieldname}.keyword字段。下面是一个使用 Nest .NET 的示例。

.Sort(s => s
    .Ascending(f => f.Field1.Suffix("keyword"))
    .Ascending(f => f.Field2.Suffix("keyword"))
    .Ascending(f => f.Field3.Suffix("keyword")))


查看完整回答
反对 回复 2023-04-21
?
大话西游666

TA贡献1817条经验 获得超14个赞

为我工作

curl -X PUT -H "Content-Type: application/json" \
    -d '{"properties": {"format": { "type":"text","fielddata": true}}}' \
    <your_host>:9200/<your_index>/_mapping


查看完整回答
反对 回复 2023-04-21
  • 3 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信