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"
                    }
                }
            }
        }
    }

  • 相关阅读:
    HDU 2108 Shape of HDU (判断是不是凸多边形 叉乘)
    三,对于printf函数和C语言编程的初步拓展
    二,养成良好的写代码习惯
    一,彻底理解第一个C语言程序 Hello World
    归并排序(看了别人的博客明白了也写个博客,希望这样不算抄袭~)
    汉诺塔
    最小生成树
    堆排序
    二叉排序树
    双关键字快排
  • 原文地址:https://www.cnblogs.com/koushr/p/5873409.html
Copyright © 2011-2022 走看看