elasticsearch Elasticsearch紧随其后,elasticsearch,pyes,elasticsearch,Pyes" /> elasticsearch Elasticsearch紧随其后,elasticsearch,pyes,elasticsearch,Pyes" />

elasticsearch Elasticsearch紧随其后

elasticsearch Elasticsearch紧随其后,elasticsearch,pyes,elasticsearch,Pyes,在执行对ES的几个get\u或\u create请求时,我遇到了一些问题。 Elasticsearch似乎在响应POST后需要一些时间来索引文档,以至于在GET之后调用的不会返回任何结果 本例再现了以下问题: curl-XPOST'http://localhost:9200/twitter/tweet/“-d”{ “用户”:“kimchy”, “发布日期”:“2009-11-15T14:12:12”, “消息”:“正在尝试弹性搜索” }' && \ curl-XGET'http://localh

在执行对ES的几个
get\u或\u create
请求时,我遇到了一些问题。 Elasticsearch似乎在响应
POST
后需要一些时间来索引文档,以至于在
GET
之后调用
不会返回任何结果

本例再现了以下问题:

curl-XPOST'http://localhost:9200/twitter/tweet/“-d”{
“用户”:“kimchy”,
“发布日期”:“2009-11-15T14:12:12”,
“消息”:“正在尝试弹性搜索”
}' && \
curl-XGET'http://localhost:9200/twitter/tweet/_search“-d”{
“查询”:{
“术语”:{“用户”:“kimchy”}
}
}' && \
睡眠1&\
curl-XGET'http://localhost:9200/twitter/tweet/_search“-d”{
“查询”:{
“术语”:{“用户”:“kimchy”}
}
}'
POST
进展顺利:

{
“ok”:没错,
“_索引”:“推特”,
“_type”:“tweet”,
“_id”:“yaLwtgSuQcWg5lzgFpuqHQ”,
“_版本”:1
}
第一个
GET
与任何结果都不匹配:

{
"take":1,,
“超时”:false,
“_碎片”:{
“总数”:5,
“成功”:5,
“失败”:0
},
“点击次数”:{
“总计”:0,
“最大分数”:空,
“点击次数”:[]
}
}
短暂停顿后,显示结果(第二次
GET
):

{
"take":1,,
“超时”:false,
“_碎片”:{
“总数”:5,
“成功”:5,
“失败”:0
},
“点击次数”:{
“总数”:1,
“最高分数”:0.30685282,
“点击次数”:[{
“_索引”:“推特”,
“_type”:“tweet”,
“_id”:“yaLwtgSuQcWg5lzgFpuqHQ”,
“_分数”:0.30685282,
“_来源”:{
“用户”:“kimchy”,
“发布日期”:“2009-11-15T14:12:12”,
“消息”:“正在尝试弹性搜索”
}
}]
}
}
这种行为正常吗

即使响应速度较慢,是否有可能立即得到结果


谢谢

是的,这是正常的,弹性搜索默认每秒更新一次索引

如果需要立即更新,请在插入文档时在URL中包含refresh=true

从文件中:

刷新

要在操作发生后立即刷新索引,以便文档立即出现在搜索结果中,可以将refresh参数设置为true。只有在仔细考虑并验证该选项不会导致性能低下(无论是从索引还是从搜索角度)后,才能将该选项设置为true。注意,使用GETAPI获取文档是完全实时的


如果需要实时访问刚编制索引的对象,则需要使用GETAPI()而不是搜索。如本文所述,搜索不是实时的。GETAPI是。因此,如果你自己给你的对象一个ID,你可以通过get API立即按ID获取该对象。

在大量导入(如批量导入)期间,还可以关闭搜索索引
刷新间隔
,并在完成后将其放回原处。 然后等待/睡眠几秒钟,它应该可以工作。
您也可以使用此选项来调整刷新间隔(可能您不在乎,只希望每隔15秒刷新一次)

您的索引请求会导致创建新索引,对吗?如果我理解正确的话,您并没有使用创建索引api预先创建它。是的,但该示例基于Elasticsearch在文档上的示例。事实上,在我的环境中发生了以前创建的索引。下面两个人给出了很好的答案:在这种情况下,使用GET API会更安全。当然,我没有注意到,大写的http GET方法让我感到困惑:)正如答案所说,使用GET或显式调用refresh。干杯谢谢,从没听说过这个1s。据我所知,使用
GET
API要好得多。我会找到一种方法来使用它而不是搜索。@Léo get API比搜索慢吗?不,get API至少和搜索一样快(可能更快)。但是,它只允许您按id获取文档,不允许您实际搜索