本篇为学习笔记,自用,对您有帮助则阅之,反之则弃之。
批量(_bulk)操作:一个好的批次最好保持在5~15MB
支持的行为:create,index,update,delete
请求格式,delete不需要action
{ action: { metadata }}\n
{ request body }\n
{ action: { metadata }}\n
{ request body }\n
...
分页
GET /_search?size=5
GET /_search?size=5&from=5
GET /_search?size=5&from=10
from起始页,size页大小
在集群中最好不要深度分页,缘由:
为了理解为什么深度分页是有问题的,让我们假设在一个有5个主分片的索引中搜索。当我们请求结果的第一页(结果1到10)时,每个分片产生自己最顶端10个结果然后返回它们给请求节点(requesting node),它再排序这所有的50个结果以选出顶端的10个结果。
现在假设我们请求第1000页——结果10001到10010。工作方式都相同,不同的是每个分片都必须产生顶端的10010个结果。然后请求节点排序这50050个结果并丢弃50040个!
你可以看到在分布式系统中,排序结果的花费随着分页的深入而成倍增长。这也是为什么网络搜索引擎中任何语句不能返回多于1000个结果的原因(博主翻了下几大搜索引擎的搜索结果,返回结果都在1000个以内)。
查询field的字段类型(ES会自动会字段分配类型)
curl -XGET 127.0.0.1:9200/megacorp/_mapping/employee?pretty
测试分词器
POST _analyze { "analyzer": "whitespace", "text": "The quick brown fox." } POST _analyze { "tokenizer": "standard", "filter": [ "lowercase", "asciifolding" ], "text": "Is this déja vu?" }
Elasticsearch支持的字段类型
类型 | 表示的数据类型 |
---|---|
String | string |
Whole number | byte , short , integer , long |
Floating point | float , double |
Boolean | boolean |
Date | date |
创建索引时,指定映射
PUT /gb
{
"mappings": {
"tweet" : {
"properties" : {
"tweet" : {
"type" : "string",
"analyzer": "english"
},
"date" : {
"type" : "date"
},
"name" : {
"type" : "string"
},
"user_id" : {
"type" : "long"
}
}
}
}
}
备注
在《重建索引》章节我们将阐述如何能高效的检索大量文档