【问题标题】:Application version comparison with Elasticsearch与 Elasticsearch 的应用程序版本比较
【发布时间】:2022-10-19 21:31:14
【问题描述】:

我有一个包含应用程序文档的弹性搜索索引。每个文档都有应用程序版本和其他一些字段:

版本:2.3.4, 名称:Spotify

版本:1.2.3, 名称:数独

在这种情况下如何应用GT(大于)按版本搜索或自定义? 如果应用程序有 1.2.3 和 1.3.2 版本 - 使用标准查询可以正常工作(GT 1 将返回两个文档),但在 1.2.3 和 2.1.3 的情况下,ES 仅返回 1.2.3 版本的应用程序。

询问:

"bool" : {
                  "should" : [
                    {
                      "range" : {
                        "application_version" : {
                          "from" : "1.2.3",
                          "to" : null,
                          "include_lower" : false,
                          "include_upper" : true,
                          "boost" : 1.0
                        }
                      }
                    }
                  ]

application_version 类型:关键字

【问题讨论】:

  • 显示您的查询。字段版本是关键字类型?
  • @rabbitbr 在原始问题中添加了查询和类型。
  • 我对范围查询进行了一些测试,并且成功了。也许您的问题是范围以外的其他子句。我正在使用 ES8.4
  • @rabbitbr lt(低于)大小写不起作用。示例: { "application_version" : { "from" : null, "to" : "2", "include_lower" : true, "include_upper" : false, "boost" : 1.0 } 返回版本为 "13.0" 和 "14.0" 的应用程序"

标签: elasticsearch


【解决方案1】:

我一直在研究,我相信对您来说最好的选择是将 application_version 的类型更改为Version field type。

版本字段类型是关键字字段的特化 处理软件版本值并支持特殊优先级 他们的规则。优先级是按照以下概述的规则定义的 语义版本控制,例如意味着主要、次要和 补丁版本部分按数字排序(即“2.1.0”<“2.4.1”< "2.11.2") 和预发布版本在发布版本之前排序 (即“1.0.0-alpha”<“1.0.0”)。

【讨论】:

    猜你喜欢
    • 2018-07-28
    • 2013-12-11
    • 2017-05-25
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多