ElasticSearch笔记

本篇为学习笔记,自用,对您有帮助则阅之,反之则弃之。


批量(_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支持的字段类型

类型表示的数据类型
Stringstring
Whole numberbyte, short, integer, long
Floating pointfloat, double
Booleanboolean
Datedate

创建索引时,指定映射

PUT /gb
{
  "mappings": {
    "tweet" : {
      "properties" : {
        "tweet" : {
          "type" :    "string",
          "analyzer": "english"
        },
        "date" : {
          "type" :   "date"
        },
        "name" : {
          "type" :   "string"
        },
        "user_id" : {
          "type" :   "long"
        }
      }
    }
  }
}

备注

在《重建索引》章节我们将阐述如何能高效的检索大量文档


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值