我正在尝试使用节点js从弹性查询大量数据。 我有以下查询完美 -
client.search({
"index": 'test',
"size": 50,
"type": consts.ReportType.VIOLATION,
"body": searchQuery
}, callback);
我的主要目标是分段获取数据,每次只获得50个结果,因为我可能有数千个弹性文档。 我在客户端的页面中显示结果(比如谷歌搜索结果),并希望仅在需要时从弹性中获取更多数据。
那么,是否有可能维持一些索引,它将告诉弹性这是我已经获得的最后一个响应,并从该点获取另外50个结果?
由于
答案 0 :(得分:1)
您可以使用pagination执行此操作。
因此,在您的情况下,例如:
@Entity
@Table(name = "student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "student_id", nullable = false, insertable = false, updatable = false)
private Long id;
@Column(name = "name", nullable = false)
private String name;
@ElementCollection
@CollectionTable(
name = "student_books",
joinColumns = @JoinColumn(name = "student_id", referencedColumnName = "student_id"))
@Column(name = "book")
private List<String> books = new ArrayList<>();
// Getters & Setters
}
答案 1 :(得分:0)
更改下一个50结果的起始大小
GET / _search { &#34;从&#34; :0,&#34;尺寸&#34; :50, &#34;查询&#34; :{ &#34;术语&#34; :{&#34;用户&#34; :&#34; kimchy&#34; } } }
<强> https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-from-size.html 强>
获取批量数据选中滚动API https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html#api-scroll
答案 2 :(得分:0)
更好的方法是使用弹性Scroll API