我想向数据库插入一些记录并搜索此记录。但由于搜索是在另一个线程中执行的事实,我什么也没找到。我有代码:
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个线程进行插入和搜索?
答案 0 :(得分:1)
您遇到问题的原因是,当您实际拨打搜索API时,索引不会更新,因此如果您更新索引,它将会起作用。
添加
setRefresh(true)
到prepareIndex
来电。
PS:虽然上述解决方案可行,但建议您不要在一般实践中使用它,因为它会对性能产生影响。 因此,最好依靠弹性搜索来更新作为后台操作的索引。那么你可以将它用于测试目的,但它不应该被用作一般的练习。