Elasticsearch常用API

Posted by Zeusro on April 10, 2019

基本查询

ES,默认并发限制1000,如果前面的查询卡住或者瞬时请求过多,就会出现异常.

创建

1
2
3
4
5
POST /a/_doc/2
{"content":"公安部:各地校车将享最高路权"}
POST /a/_doc/1
{"content":"男人老狗穿什么连衣裙"}

查询

  • 返回文档的一部分

?_source=title,text

get

1
2
get /a/text/1
get /a/text/2

更新

  • 部分更新

/_update

  • 取回多个文档

/_mget

  • 分析
1
2
3
4
5
GET _analyze
{
  "analyzer" : "standard",
  "text" : "this is a test"
}

分片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
PUT test
{
    "settings" : {
        "number_of_shards" : 1
    },
    "mappings" : {
        "properties" : {
            "field1" : { "type" : "text" }
        }
    }
}
GET /kimchy,elasticsearch/_search?q=tag:wow
GET /_all/_search?q=tag:wow

GET _cat/indices

系统查询

  • 健康检查

GET /_cluster/health

基于插件的查询

elasticsearch-analysis-ik

使用该插件,要注意mappings要在创建index时创建,不能后期修改/添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
PUT /a
{
	"mappings": {
		"_doc": {
			"properties": {
				"content": {
					"type": "text",
					"analyzer": "ik_max_word",
					"search_analyzer": "ik_smart"
				}
			}
		}
	}
}

使用在线热更新接口有个问题:对于旧的的数据需要重新索引(reindex).所以妄想通过增加新词来对旧的数据进行分词,这种需求是无法实现的.

热更新的词语存在内存中,不会更新dic文件

分片管理

默认模板设置

1
2
3
4
5
6
7
8
POST _template/default
{
  "template": ["*"]
  "order": -1
  "settings": {
    "number_of_replicas": "0"
  }
}
  • 自定义模板-设置副本数默认为0
1
2
3
4
5
6
7
curl -XPUT 0.0.0.0:9200/_template/zeroreplicas  -H 'Content-Type: application/json' -d '
{
"template" : "*",
"settings" : {
"number_of_replicas" : 0
}
}'

付费功能(_xpack)

es默认没有密码,需要用户授权功能的话买商业版的许可.

GET /_xpack/security/user

7.0废弃的查询

As of version 7.0 Elasticsearch will require that a [field] parameter is provided when a [seed] is set

改为

1
2
3
4
 "random_score": {
                "seed": 10,
                "field": "_seq_no"
            }

Deprecation: Deprecated field [inline] used, expected [source] instead

1
2
3
4
		"_script": {
			"script": {
				"inline": "doc['xxx'].value>0?1:0"
			},

inline

参考链接:

  1. 基础入门
  2. 文档元数据
  3. es 的常用查询语法