V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Memento
V2EX  ›  Elasticsearch

Elasticsearch script_fields 的重用问题

  •  
  •   Memento · 2019-10-21 10:53:07 +08:00 · 4115 次点击
    这是一个创建于 1866 天前的主题,其中的信息可能已经有所发展或是发生改变。

    定义的 script_fields 可以在其他地方使用吗? 如何使用? 比如:

    "script_fields" : {
            "test1" : {
                "script" : {
                    "lang": "painless",
                    "source": "doc['price'].value * 2"
                }
            },
            "test2" : {
                "script" : {
                    "lang": "painless",
                    "source": "<此处可以使用上面定义的`test1`进行计算吗?>"
                }
            }
        }
    

    目前 ES 版本 7.4;

    6 条回复    2019-10-21 14:23:42 +08:00
    airfling
        1
    airfling  
       2019-10-21 11:00:05 +08:00
    script_field 这个只是针对某个索引或者某个 template 的吧
    Memento
        2
    Memento  
    OP
       2019-10-21 11:34:49 +08:00
    @airfling 那 ES 有办法自定义变量, 然后重用于其他地方, 比如过滤或者其他变量的计算? `Solr` 中可以通过 `set(param, script)`, 然后其他地方可以通过 `$param` 获取该变量处理;
    airfling
        3
    airfling  
       2019-10-21 11:41:06 +08:00
    @Memento 似乎没有,es 对外开放的其实是接口,对索引和 templte 的配置,script_field 也算配置是保存在另外一个索引里的,你可以找下 es 是否支持自定义聚合,如果支持的话你用自定义聚合应该可以
    Memento
        4
    Memento  
    OP
       2019-10-21 11:55:07 +08:00
    @airfling 这跟聚合不一样吧, 需求是需要自定生成一个变量 A, 并且这个变量 A 参与到评分`boost`排序`sort`, 还有其他变量的计算, 如果不重用的话, 这些地方都需要计算一遍生成 A 的脚本.
    airfling
        5
    airfling  
       2019-10-21 13:37:46 +08:00   ❤️ 1
    @Memento https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting-using.html 我刚看了这个文档,你可以用这个高级语法 https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting-engine.html ,自已自定义一个。你也可以自己试下可不可以像 agg 那样进行嵌套,如果不能嵌套就自己用后面的高级语法自己定义一个
    Memento
        6
    Memento  
    OP
       2019-10-21 14:23:42 +08:00
    @airfling 嵌套我试了一下, 貌似不行, 文档中也没有找到相关的. 那个自定义的高级用法还得研究一下, 不知道可不可获取自定义的 script_fields. 多谢~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1138 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:39 · PVG 07:39 · LAX 15:39 · JFK 18:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.