如何在一个线程中插入和搜索elasticsearch使用Java?

时间:2014-12-10 09:47:39

标签: java elasticsearch

我想向数据库插入一些记录并搜索此记录。但由于搜索是在另一个线程中执行的事实,我什么也没找到。我有代码:

IndexResponse indexResponse = client.prepareIndex(indexName, documentType)
            .setSource(request.toJSONString())
            .setOperationThreaded(false)
            .execute()
            .actionGet();

SearchResponse response = client.prepareSearch(indexName)
            .setTypes(documentType)
            .setQuery(boolQuery)
            .setSize(number)
            .setFrom(offset)
            .addSort("date", SortOrder.ASC)
            .execute()
            .actionGet();

我没有找到最后的记录。如何设置1个线程进行插入和搜索?

1 个答案:

答案 0 :(得分:1)

您遇到问题的原因是,当您实际拨打搜索API时,索引不会更新,因此如果您更新索引,它将会起作用。

添加

setRefresh(true)

prepareIndex来电。

PS:虽然上述解决方案可行,但建议您不要在一般实践中使用它,因为它会对性能产生影响。 因此,最好依靠弹性搜索来更新作为后台操作的索引。那么你可以将它用于测试目的,但它不应该被用作一般的练习。