• es 脚本及脚本查询


    脚本语法是:

    "script": {
        "lang": "xxx",
        "source" | "id": "xxx",
        "params": {xxx}
    }

    lang是language的意思,指定脚本是用哪种语言写的,值可以是painless、expression,默认是painless。

    source用于指定脚本,id用于指定我们自己预定义的脚本。

    params用于指定在脚本中使用的参数。es在每次遇到新脚本时,会将该脚本编译并缓存起来,而编译是一个相对耗时的操作。所以,如果脚本只是参数值不同,建议使用params,而不是把参数值在脚本中写死。

    脚本可以用在很多地方,如update、update_by_query、reindex、script query、script-based sorting、aggregation。

    update示例:

    post /indicator_item/_doc/1/_update?pretty
    {
        "script" : {
            "source": "ctx._source.type++"
        }
    }

    缩写如下:

    post /indicator_item/_doc/1/_update
    {
        "script" : "ctx._source.type++"
    }

    update_by_query示例:

    post /indicator_item/_update_by_query
    {
        "script": {
            "source": "ctx._source.type++",
            "lang": "painless"
        },
        "query": {
            "term": {
                "id": 1
            }
        }
    }

    script_fields

    返回一个新的自定义的字段,字段值可以由其他字段值糅合产生。

    script query

    get /indicator_item/_search
    {
        "query":{
            "script": {
                "script" : {
                    "source": "doc['name'].value.length() <= params.param1",
                    "lang": "painless",
                    "params": {
                        "param1":1
                    }
                }
            }
        }
    }

    doc是个关键字,表示文档。name指的是name字段,value是个关键字,指的是字段的值,length()是java.lang.String的length()方法。把length()方法的括号去掉,让es执行报错,看报错信息就明白了。所以说,还可以用String的其他方法,如substring()方法,如下:

    get /indicator_item/_search
    {
        "query":{
            "script": {
                "script" : {
                    "source": "doc['name'].value.trim().toUpperCase().contains(params.param1)",
                    "lang": "painless",
                    "params": {
                        "param1":"RBC"
                    }
                }
            }
        }
    }

  • 相关阅读:
    LightDB/postgresql内置特性之访问oracle之oracle_fdw介绍
    Java系列 | Linux系统中运行JMeter脚本
    适合新手练习的python开源经典源码
    基于python的json和cvs格式转换
    基于python中librosa的声音混音实例解析
    基于python的多线程串口处理实例源码解析
    基于python的定时PC定时录音机实现
    python librosa 实例解析
    噪声分贝测试测量仪工作原理分析
    Python中的join()函数的用法实例分析
  • 原文地址:https://www.cnblogs.com/koushr/p/5873409.html
Copyright © 2020-2023  润新知