Java - 弹性搜索

时间:2015-06-03 06:58:43

标签: java postgresql java-ee elasticsearch

在这里,我正在尝试创建一个java应用程序,并在应用程序中使用elasticsearch作为第一个阶段,我使用spring创建了一个简单的Dynamic Web Java应用程序。在此应用程序(简单员工记录应用程序)中,我有一个特权登录(管理员和用户)。

  • 管理员 - 他拥有所有权限
  • 用户 - 单独阅读和编辑权限

我正在尝试在此应用程序中使用弹性搜索

希望您能帮助我在应用程序中使用elasticsearch,以便我能够更好地理解弹性搜索。

1 个答案:

答案 0 :(得分:0)

Elasticsearch通过应用查询和过滤器提供了足够数量的java api来获取搜索结果。

查看此链接以获取更多详细信息:

https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/client.html

        JSONParser parser = new JSONParser();
        JSONObject jsonObject = null;

        Settings s = ImmutableSettings.settingsBuilder()
                .put("cluster.name", SEARCH_CLUSTER_NAME).build();
        SEARCH_CLIENT = new TransportClient(s)
                .addTransportAddress(new InetSocketTransportAddress(
                        SEARCH_HOST, Integer.parseInt(SEARCH_PORT)));

        SearchResponse searchResponse = SEARCH_CLIENT
                .prepareSearch(SEARCH_INDEX_NAME)
                .setScroll(new TimeValue(600000))
                .setTypes(SEARCH_TYPE_NAME)
                .setSearchType(SearchType.SCAN)
                .setQuery(QueryBuilders.matchAllQuery())
                .execute()
                .actionGet();

        while (true) {
            searchResponse = SEARCH_CLIENT
                    .prepareSearchScroll(searchResponse.getScrollId())
                    .setScroll(new TimeValue(600000)).execute().actionGet();
            for (SearchHit hit : searchResponse.getHits()) {

                jsonObject = (JSONObject) parser.parse(hit
                        .getSourceAsString());

            }
            // Break condition: No hits are returned
            if (searchResponse.getHits().getHits().length == 0) {
                break;
            }
        }