elasticsearch,client,Java,Search,Indexing,elasticsearch,Client" /> elasticsearch,client,Java,Search,Indexing,elasticsearch,Client" />

Java ElasticSearch索引和搜索工作不正常

Java ElasticSearch索引和搜索工作不正常,java,search,indexing,elasticsearch,client,Java,Search,Indexing,elasticsearch,Client,当我为数据编制索引,然后在一个线程进程中搜索数据时,它就起作用了。如果我建立索引并停止该进程,则只运行搜索以查找索引数据,而不运行命中。这个问题的原因是什么?我的错误客户是什么?我是弹性搜索新手,所以我找不到原因,请帮助我 org.elasticsearch.node.Node node = nodeBuilder().clusterName("farukest").node(); Client client = node.client(); String[]

当我为数据编制索引,然后在一个线程进程中搜索数据时,它就起作用了。如果我建立索引并停止该进程,则只运行搜索以查找索引数据,而不运行命中。这个问题的原因是什么?我的错误客户是什么?我是弹性搜索新手,所以我找不到原因,请帮助我

    org.elasticsearch.node.Node node = nodeBuilder().clusterName("farukest").node();
    Client client = node.client();

        String[] deneme = {keyword[0]}; // keyword fetched from database
        for (int i = 0; i < degerler.length; i++) {

            IndexResponse response = client.prepareIndex("Ali9".toLowerCase(),"Api",Integer.toString(i))
                    .setSource(jsonBuilder()
                            .startObject()
                            .field("Post Id", degerler[i][0].toString())
                            .field("Post Like Count", degerler[i][1].toString())
                            .field("Post Shares Count", degerler[i][2].toString())
                            .field("Post Comment Count", degerler[i][3].toString())
                            .field("Page Name",degerler[i][4].toString())
                            .field("Message", degerler[i][5].toString())
                            .endObject()
                    ).setRefresh(true)
                    .execute()
                    .actionGet();

       SearchResponse r = client.prepareSearch("Ali9".toLowerCase()) // Searching
                    .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
                    .setQuery(termQuery("Message", "Fenerbahçelim".toLowerCase()))
                    .setFrom(0).setSize(60).setExplain(true)
                    .execute()
                    .actionGet();
                        System.out.println(r);
            SearchHit[] hits = r.getHits().getHits();
            System.out.println(hits.length);
            for (SearchHit searchHit : hits) {
            Map<String, Object> source = searchHit.getSource();
                for (Map.Entry<String,Object> values : source.entrySet()) {
                    System.out.println(values.getValue()+"  ...");
                }
            }  

如果我单独运行,结果是0个数据。如果我在一个进程中运行这些,它就会工作。

您是每次都在旋转并销毁一个节点,还是连接到一个真正的ES实例?如果是假的/群集和节点,您是否需要不同的设置网关可能。。为了在JVM之间保持持久性?我遵循弹性搜索指南。我不明白你说的销毁节点是什么意思,你是说node.close?我将JAVA_HOME添加到计算机->Adv.Settings->环境变量,运行ElasticSearch->ElasticSearch-service-x64.exe,然后作为管理员ElasticSearch.bat运行。当我进行这些设置时,我编写了localhost:9200,显示了一些信息。但过了一段时间,我尝试了localhost:9200,但它不起作用。我认为我的客户端节点或其他设置有问题。现在我尝试了一些东西。我索引了数据,当过程完成时。我快速运行搜索过程,命中1。但在5秒后再次命中0。我等待了20分钟,然后只运行搜索,结果正确,命中率为0。但在一些试验中,命中率为0。这怎么可能?请帮帮我,我得把这个修好。