elasticsearch 常用语法

最近新上一个检索相关的项目,需要用到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错误解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值