使用Node js从elasticsearch中获取数据

时间:2017-09-26 12:12:18

标签: node.js elasticsearch

我正在尝试使用节点js从弹性查询大量数据。 我有以下查询完美 -

client.search({
  "index": 'test',
  "size": 50,
  "type": consts.ReportType.VIOLATION,
  "body": searchQuery
}, callback);

我的主要目标是分段获取数据,每次只获得50个结果,因为我可能有数千个弹性文档。 我在客户端的页面中显示结果(比如谷歌搜索结果),并希望仅在需要时从弹性中获取更多数据。

那么,是否有可能维持一些索引,它将告诉弹性这是我已经获得的最后一个响应,并从该点获取另外50个结果?

由于

3 个答案:

答案 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