从ES1.6迁移到ES5.2

时间:2017-03-16 11:01:09

标签: java elasticsearch

您必须将Java源代码从Elasticsearch@1.6迁移到ES@5.2 大多数事情都非常明显,但有一些我需要注意的事情(因为我是ES初学者)。 以下语法正确,但我不确定它是否在逻辑上是正确的。也许你可以提供一些反馈:

第一

// old version:
CountResponse countResponse;
count = countResponse.getCount();

// new version:
SearchResponse countResponse;
count = countResponse.getHits().getTotalHits();

第二

// old version
esClient.prepareDeleteByQuery(SearchComponentsConstants.INDEX_CATALOG)
    .setTypes(type)
    .setQuery(QueryBuilders.filteredQuery(
                  QueryBuilders.matchAllQuery(), 
                  FilterBuilders.andFilter(
                      FilterBuilders.termFilter(CatalogDocument.CatalogIndex.CATALOGID.getIndexField(), catalogId),
                      FilterBuilders.termFilter(SearchComponentsConstants.FIELD_DEFAULT_ID, id))
                  )
              )
    .get();  

// new version:
DeleteByQueryAction.INSTANCE.newRequestBuilder(esClient).setIndices(SearchComponentsConstants.INDEX_CATALOG)
    .setTypes(type)
    .setQuery(QueryBuilders.boolQuery()
                  .must(QueryBuilders.matchAllQuery())
                  .must(QueryBuilders.boolQuery()
                       .must(QueryBuilders.termQuery(CatalogDocument.CatalogIndex.CATALOGID.getIndexField(), catalogId))
                       .must(QueryBuilders.termQuery(SearchComponentsConstants.FIELD_DEFAULT_ID, id))
                   )
             )
    .get();  

1)在很多例子中,我看到.setIndices(myindex)根本没有被使用 - 但是当我的旧代码有这个可变(SearchComponentsConstants.INDEX_CATALOG)时,我必须在新代码中设置它,避风港不是吗?

2)新代码可能错误,因为我将.filteredQuery(a, b)替换为.boolQuery().must(a).must(b) ,而也将.andFIlter(a, b)替换为.boolQuery().must(a).must(b) ...所以我猜filteredQuery()替换可能是错误的。

第三

// old version:
AbstractSearchParameter searchParameter;
SearchRequestBuilder search = client.prepareSearch(searchParameter.getIndex());
search.addFields(searchParameter.getFieldsToReturn().toArray(new String[0]));

// new version:
AbstractSearchParameter searchParameter;
SearchRequestBuilder search = client.prepareSearch(searchParameter.getIndex());
for(String field : searchParameter.getFieldsToReturn()){
    search.addStoredField(field);
}

我不知道.toArray(new String[0])代表什么,所以我不确定我的替换是否正确。

0 个答案:

没有答案