ElasticSearch笔记

    xiaoxiao2021-03-26  45

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

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

    类型表示的数据类型StringstringWhole numberbyte, short, integer, longFloating pointfloat, doubleBooleanbooleanDatedate

    创建索引时,指定映射

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

    备注

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

    转载请注明原文地址: https://ju.6miu.com/read-663646.html

    最新回复(0)