在我的逻辑中,应用程序将文档写入elasticsearch,它有时会尝试从另一个线程读取它。但是当它试图读取它时,查询不会返回任何命中。
我假设在POST请求(插入)中,当我得到201时,表示文档已创建。
我的假设是错的吗?我在这里缺少什么?
感谢您的回复
Neron
编辑:
保存回复{“_index”:“customers”,“_type”:“customers”,“_id”:“123",“_version”:1,“result”:“created”,“_shards”:{“total”:2,“successful”:2,“failed”:0},“created”:true}
查询请求:
{
"size": 1,
"from": 0,
"query": {
"bool": {
"must": [
{
"match_phrase": {
"id": "123"
}
}
]
}
}
}
查询 - 响应:
{"took":1,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":0,"max_score":null,"hits":[]}}
一段时间后,它会得到响应,而现在不会发出命中。
答案 0 :(得分:0)
我认为您正在执行 GET 请求,这就是获取200
状态代码的原因。如果是 POST ,则应该是201
状态代码。
尝试此查询。
{
"size": 1,
"from": 0,
"query": {
"bool": {
"must": [
{
"match_phrase": {
"_id": "123"
}
}
]
}
}
}
答案 1 :(得分:0)
查询请求似乎不正确。你应该尝试“_id”而不是“id”:
{
"size": 1,
"from": 0,
"query": {
"bool": {
"must": [
{
"match_phrase": {
"_id": "123"
}
}
]
}
}
}