您的位置:首页 > 编程语言 > Java开发

elasticsearch 常用语法

2016-01-05 10:12 543 查看
最近新上一个检索相关的项目,需要用到elasticsearch,快速学习了下es的查询语法,目前业务上用到的就这么多,待更新

1.通配符和正则表达式查询:

结合?和*字符可以进行模糊查询,?用来匹配任意字符,*用来匹配零个或者多个字符。但是查询速度会较慢,避免用通配符作为开头

{

    "query": {

        "wildcard": {

            "field": "W?F*HW" 

        }

    }

}
2.多字段查询:

{

  "query": {

    "bool": {

      "must": [//还有个should,没仔细研究

        { "match": { "field":  "value" }},

        { "match": { "field":  "value" }}

      ]

    }

  }

}
1和2 组合查询:
{

 “from”:0,

"size":1000,

  "query": {

    "bool": {

      "must": [

        { "match": { "field":  "value" }},

        { "match": { "field":  "value" }},

        { "wildcard": {

                "field": "W?F*HW" 

            }

        }

        { "range": {//时间区间

                "field": {

                    "gte":  "value",

                    "lt":   "value"

                }

            }

        }

      ]

    }

  }
}

3.bulk批量建索引

request文件内容如下:

{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }

{ "field1" : "value1" }

查询命令:

curl -s -XPOST localhost:9200/_bulk --data-binary '@request'

4.快速检索语法:

在进行一般性搜索时,一般搜索框中输入的值无法判断属于哪个字段,就需要用到一种快速查询语法:

curl -XGET "localhost:9200/test/tabl1/_search?q=%s&from=0&size=1000"

5.修改设置

在进行查询时,如果查询体里没有from和size参数,则默认最多返回5条搜索结果,且默认的size最大为10000,超过则返回错误。

为了修改这个值,需要以下语法:

curl -XPUT "localhost:9200/test/_settings" -d '{

  "settings": {

    "index": {

      "max_result_window": 1000000 #显示结果数

    }

 }

}'

6.关于内存限制

在返回结果为百万以上数量级时,总会报OOM错误,查看为java heap space的错误,google了一下原因,基本都是让改ES_HEAP_SIZE这个值,但是我这里改了没有用,于是在linux查看es的进程,发现在启动es服务时,es的bin文件会启动java,而且对java内存大小有个默认的值,于是直接修改es的bin文件中的JAVA_OPTS变量:

JAVA_OPTS='-server -Xms2048m -Xmx4096m -XX:PermSize=128m -XX:MaxPermSize=512m'

重启es,再看进程,果然内存重新分配,OOM错误解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  elasticsearch java