es基础语法

ads

本文是对Elasticsearch基本语法的部分补充,方便大家更好的理解对Elasticsearch基础语法的基本使用

1、文档输入

在输入一个文档时:文档中的 _index 、 _type 和 _id 唯一标识一个文档。 我们可以提供自定义的 _id 值,或者让 index API 自动生成

2、返回文档中部分字段

单个字段能用 _source 参数请求得到,多个字段也能使用逗号分隔的列表来指定

curl -X GET "localhost:9200/website/blog/123?_source=title,text&pretty"

返回结果:

{  "_index" :   "website",  "_type" :    "blog",  "_id" :      "123",  "_version" : 1,  "found" :   true,  "_source" : {      "title": "My first blog entry" ,      "text":  "Just trying this out..."  }}

其中结果中:_version表示文档所对应的版本,found表示是否查询文档成功,_source表示返回的文档信息;其中像_index_type_id_versionfound为ES返回的元数据信息

如果想得到 _source 字段,不需要任何元数据,你能使用 _source 端点:

curl -X GET "localhost:9200/website/blog/123/_source?pretty"

返回结果:

{   "title": "My first blog entry",   "text":  "Just trying this out...",   "date":  "2014/01/01"}

3、文档部分更新

在更新一个文档的方法是检索并修改它,然后重新索引整个文档。然而,使用 update API 我们还可以部分更新文档

在文档更新是不可变的:他们不能被修改,只能被替换。 update API 必须遵循同样的规则。从外部来看,我们在一个文档的某个位置进行部分更新。然而在内部, update API 简单使用与之前描述相同的 检索-修改-重建索引 的处理过程。区别在于这个过程发生在分片内部,这样就避免了多次请求的网络开销。通过减少检索和重建索引步骤之间的时间,我们也减少了其他进程的变更带来冲突的可能性。

update 请求最简单的一种形式是接收文档的一部分作为 doc 的参数, 它只是与现有的文档进行合并。对象被合并到一起,覆盖现有的字段,增加新的字段。例如,我们增加字段 tags 和 views 到我们的博客文章,如下所示:

curl -X POST "localhost:9200/website/blog/1/_update?pretty" -H 'Content-Type: application/json' -d'{   "doc" : {      "tags" : [ "testing" ],      "views": 0   }}'

4、空搜索

curl -X GET "localhost:9200/_search?pretty"

返回结果:

{   "hits" : {      "total" :       14,      "hits" : [        {          "_index":   "us",          "_type":    "tweet",          "_id":      "7",          "_score":   1,          "_source": {             "date":    "2014-09-17",             "name":    "John Smith",             "tweet":   "The Query DSL is really powerful and flexible",             "user_id": 2          }       },        ... 9 RESULTS REMOVED ...      ],      "max_score" :   1   },   "took" :           4,   "_shards" : {      "failed" :      0,      "successful" :  10,      "total" :       10   },   "timed_out" :      false}

(1)hits

返回结果中最重要的部分是 hits ,它包含 total 字段来表示匹配到的文档总数,并且一个 hits 数组包含所查询结果的前十个文档。

在 hits 数组中每个结果包含文档的 _index 、 _type 、 _id ,加上 _source 字段。这意味着我们可以直接从返回的搜索结果中使用整个文档。这不像其他的搜索引擎,仅仅返回文档的ID,需要你单独去获取文档。

每个结果还有一个 _score ,它衡量了文档与查询的匹配程度。默认情况下,首先返回最相关的文档结果,就是说,返回的文档是按照 _score 降序排列的。在这个例子中,我们没有指定任何查询,故所有的文档具有相同的相关性,因此对所有的结果而言 1 是中性的 _score 。

max_score 值是与查询所匹配文档的 _score 的最大值。

(2)took

took 值告诉我们执行整个搜索请求耗费了多少毫秒。

(3)shards

_shards 部分告诉我们在查询中参与分片的总数,以及这些分片成功了多少个失败了多少个。正常情况下我们不希望分片失败,但是分片失败是可能发生的。如果我们遭遇到一种灾难级别的故障,在这个故障中丢失了相同分片的原始数据和副本,那么对这个分片将没有可用副本来对搜索请求作出响应。假若这样,Elasticsearch 将报告这个分片是失败的,但是会继续返回剩余分片的结果。

(4)timeout

timed_out 值告诉我们查询是否超时。默认情况下,搜索请求不会超时。如果低响应时间比完成结果更重要,你可以指定 timeout 为 10 或者 10ms(10毫秒),或者 1s(1秒):

GET /_search?timeout=10ms

在请求超时之前,Elasticsearch 将会返回已经成功从每个分片获取的结果。

最后编辑于:2024/1/17 拔丝英语网

admin-avatar

英语作文代写、国外视频下载

高质量学习资料分享

admin@buzzrecipe.com