当前位置: 首页 > 面试题库 >

elasticsearch Java API:matchAll搜索查询不返回结果吗?

芮雪风
2023-03-14
问题内容

我有一个运行中的elasticsearch的内存实例,并做了一些探索性的编码来学习搜索Java
API。我能够将文档提交到索引并使用GET检索它们,但是当我尝试简单的搜索查询时,没有得到任何结果。

// first, try a get request, to make sure there is something in the index
GetResponse results = client.prepareGet(INDEX_NAME, INDEX_TYPE, testID)
        .execute()
        .actionGet();
// this assertion succeeds, as we expect it to.
assertThat(results.getId()).isEqualTo(testID);

// next, try the simplest possible search
SearchResponse s1 = client.prepareSearch(INDEX_NAME).setQuery(matchAllQuery())
        .execute()
        .actionGet();
// this assertion fails. why? answer: when we have an in-memory node, we have to 
// manually call refresh on the indexing, after submitting a document.
assertThat(s1.getHits().totalHits()).isGreaterThanOrEqualTo(1);

经过一些测试后,我认为问题出在我如何设置节点和关联的客户端(在内存中):

@BeforeMethod
    public void setup() {
        // set up elastic search to run locally. since the transaction
        // log needs a filesystem, we can't run it as purely in memory,
        // but we can set the data directories into "target", so that maven will
        // clean up after the fact: http://bit.ly/OTN7Qf
        Settings settings = ImmutableSettings.settingsBuilder()
                .put("node.http.enabled", true)
                .put("path.logs","target/elasticsearch/logs")
                .put("path.data","target/elasticsearch/data")
                .put("gateway.type", "none")
                .put("index.store.type", "memory")
                .put("index.number_of_shards", 1)
                .put("index.number_of_replicas", 1).build();

        node = NodeBuilder.nodeBuilder().local(true).settings(settings).node();
        client = node.client();
    }

问题答案:

Googleelasticsearch小组中的某个人很友好,可以在这里帮助我。将文档提交到内存节点后,我需要刷新索引:

        node.client().admin().indices().prepareRefresh().execute().actionGet();

调用刷新解决了该问题。



 类似资料:
  • 创建新的。NET Framework 4.6.1控制台应用程序 为NEST 6.5.0和ElasticSearch.NET 6.5.0添加NuGet包 然后,我创建了一个新的弹性索引,其中包含具有“tags”属性的对象(类型为“mything”)。此标记是一组可能值中的随机逗号分隔的单词集。在测试中,我在索引中插入了100到5000项。我试了越来越少的可能的词在设置。

  • 我正在用Hibernate Search 4.5.1和Spring 4.0.5版本构建一个应用程序。我正在尝试索引以下类: 我正在构建一个junit测试用例,看起来如下所示: 我还注意到在luke lucene上,一些索引词的长度最多为6个字符,例如,一首歌的艺术家是“后代”,而索引中存储的词是“the”和“offspr”。第一个可以,但第二个不应该是“后代”。为什么要截断名字?

  • 我正在玩mongob,并将一些测试数据{name:"david"}输入到“用户”集合中。我通过键入mongoshell验证了数据在MongoDB中 结果: 在 node.js 脚本中,使用以下代码: 不返回任何结果 我没有发现任何错误,也没有错误。请告知

  • 我有下面的SQL查询,我在flink工作中使用。< code>mysql_table是使用JDBC连接器创建的,而< code>kafa_source表是从传入的kafka流创建的。 我在两者之间执行时态连接,当我在Flink的sql-client CLI中检查时,运行良好(用< code>flink-faker测试)。内部查询工作得非常好,并且正在打印结果。有人能帮助我找出这个问题吗? 编辑:我

  • 在我的弹性搜索数据库中插入6条记录后,我正在尝试一个弹性搜索示例。

  • 当我使用MS Graph API并调用时,我会得到这个响应 {“@odata.context”:https://graph.microsoft.com/v1.0/$metadata#sites”,“value”:[]} 请求ID→cfb68a16-eb50-42ab-950c-fbfeec4Def5c 但是我可以使用有响应 {“@odata.context”:https://graph.micro