elasticsearch - 查询 elasticsearch 可以通过 id 获取文档,但在查询 all 中找不到
问题描述
我使用的是 ES 2.3,现在我将它升级到 ES 7.4。数据是通过自动测试生成的。所以它总是32个文档。
我发现当我使用带有查询全部的 ES 2.3 时,我得到了所有 32 个文档。例如,data.id: 5dba917f61b48a327c948557
可以在结果中找到该文档。我可以通过查询data.id
,文档也可以找到。
但是如果我使用 ES 7 做同样的事情,我CAN NOT
会找到所有查询中的文档,data.id:5dba917f61b48a327c948557
例如。http://localhost:9200/test-auditing-2019-10/_search?pretty=true结果。
{
"took" : 16,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 32,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "test-auditing-2019-10",
"_type" : "_doc",
"_id" : "J0LIIG4Bw-26hPm9OiXO",
...
我在查询http://localhost:9200/test-auditing-2019-10/_search?q=data.id:5dba917f61b48a327c948557&pretty=true时确实得到了文件。
...
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 2.3795462,
"hits" : [
{
"_index" : "test-auditing-2019-10",
"_type" : "_doc",
"_id" : "RELIIG4Bw-26hPm9WyUP",
...
怎么了?这是预期的吗?非常感谢。
解决方案
ElasticSearch 2.3 太旧了,也许它会返回所有匹配的文档。我没有这个版本,无法复制。
但是,现代 ElasticSearch 默认只返回 10 个匹配的文档,即使您的查询匹配所有文档。为了获得更多匹配的文档,可以使用from
andsize
进行分页:
获取前 32 个文档:
http://localhost:9200/test-auditing-2019-10/_search?from=0&size=32&pretty=true
获取接下来的 32 个文档:
http://localhost:9200/test-auditing-2019-10/_search?from=32&size=32&pretty=true
推荐阅读
- vb.net - 视觉基础 | 空白 | 制表位 | 如何删除空格?
- android - 线圈 ImageView 不完全适合
- android - 错误:无法解决:com.github.glomadrian:MaterialAnimatedSwitch:1.1
- node.js - 为 cron 作业注入的服务未定义
- php - Laravel Eloquent 中的“刷新模型”是什么,请帮助我理解这一点
- rest - API PUT 端点是否应该接收所有参数,即使它们不可编辑?
- ruby - 如何使用 ruby 将文本嵌入到黄瓜报告中?
- google-bigquery - 将 Bigquery 结果写入 Datalab 中的 Bigquery
- azure - 通过直接 URL 浏览时上传到 Azure Blob 存储的图像不可用
- java - 为什么 LeakedConnectionCount 在 weblogic 中总是 0?