zoukankan      html  css  js  c++  java
  • 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"
                    }
                }
            }
        }
    }

  • 相关阅读:
    Easyui datagrid行内【添加】、【编辑】、【上移】、【下移】
    使用dynamic linq 解决自定义查询的若干弊端
    用CS的思维可以指导BS的项目吗?
    那些让 Web 开发者们深感意外的事情
    asp.net实现access数据库分页
    那些相见恨晚的 JavaScript 技巧
    Javascript的执行过程详细研究
    asp.net 遍历文件夹下全部子文件夹并绑定到gridview上
    无废话JavaScript(下)
    asp.net DataTable导出 excel的方法记录(第三方)
  • 原文地址:https://www.cnblogs.com/koushr/p/5873409.html
Copyright © 2011-2022 走看看