Search in sources :

Example 1 with Reindex

use of io.zulia.client.command.Reindex in project zuliasearch by zuliaio.

the class Zulia method main.

public static void main(String[] args) {
    LogUtil.init();
    ZuliaBaseArgs zuliaArgs = new ZuliaBaseArgs();
    GetIndexesCmd getIndexesCmd = new GetIndexesCmd();
    VersionCmd version = new VersionCmd();
    ClearCmd clear = new ClearCmd();
    OptimizeCmd optimize = new OptimizeCmd();
    GetCountCmd getCount = new GetCountCmd();
    GetCurrentNodesCmd getCurrentNodes = new GetCurrentNodesCmd();
    GetFieldsCmd getFields = new GetFieldsCmd();
    DeleteCmd delete = new DeleteCmd();
    ReindexCmd reindex = new ReindexCmd();
    QueryCmd query = new QueryCmd();
    JCommander jCommander = JCommander.newBuilder().addObject(zuliaArgs).addCommand(version).addCommand(getIndexesCmd).addCommand(query).addCommand(clear).addCommand(getCount).addCommand(getCurrentNodes).addCommand(getFields).addCommand(delete).addCommand(reindex).addCommand(optimize).build();
    try {
        jCommander.parse(args);
        if (jCommander.getParsedCommand() == null) {
            jCommander.usage();
            System.exit(2);
        }
        ZuliaPoolConfig config = new ZuliaPoolConfig().addNode(zuliaArgs.address, zuliaArgs.port);
        ZuliaWorkPool workPool = new ZuliaWorkPool(config);
        if ("--version".equalsIgnoreCase(jCommander.getParsedCommand())) {
            System.out.println(ZuliaVersion.getVersion());
            System.exit(0);
        }
        if ("getIndexes".equalsIgnoreCase(jCommander.getParsedCommand())) {
            GetIndexes getIndexes = new GetIndexes();
            GetIndexesResult execute = workPool.execute(getIndexes);
            System.out.println(execute.getIndexNames());
            System.exit(0);
        }
        String index = zuliaArgs.index;
        if (index == null) {
            System.err.println("Please pass in an index.");
            jCommander.usage();
            System.exit(2);
        }
        if ("query".equals(jCommander.getParsedCommand())) {
            Search search;
            if (query.indexes != null) {
                search = new Search(query.indexes);
            } else {
                search = new Search(index);
            }
            search.setAmount(query.rows);
            ScoredQuery scoredQuery = new ScoredQuery(query.q);
            if (query.qf != null) {
                query.qf.forEach(scoredQuery::addQueryField);
            }
            if (query.minimumNumberShouldMatch != null) {
                scoredQuery.setMinShouldMatch(query.minimumNumberShouldMatch);
            }
            search.addQuery(scoredQuery);
            search.setStart(query.start);
            if (query.fetch.equalsIgnoreCase("full")) {
                search.setResultFetchType(ZuliaQuery.FetchType.FULL);
            }
            if (query.facets != null) {
                for (String facet : query.facets) {
                    search.addCountFacet(new CountFacet(facet).setTopN(query.facetCount).setTopNShard(query.facetShardCount));
                }
            }
            if (query.sortFields != null) {
                for (String sortField : query.sortFields) {
                    search.addSort(new Sort(sortField));
                }
                ;
            }
            if (query.sortDescFields != null) {
                for (String sortDesc : query.sortDescFields) {
                    search.addSort(new Sort(sortDesc).descending());
                }
            }
            if (query.fq != null) {
                for (String filterQuery : query.fq) {
                    search.addQuery(new FilterQuery(filterQuery));
                }
            }
            if (query.fl != null) {
                query.fl.forEach(search::addDocumentField);
            }
            if (query.flMask != null) {
                query.flMask.forEach(search::addDocumentMaskedField);
            }
            SearchResult searchResult = workPool.search(search);
            List<ZuliaQuery.ScoredResult> srList = searchResult.getResults();
            System.out.println("QueryTime: " + (searchResult.getCommandTimeMs()) + "ms");
            System.out.println("TotalResults: " + searchResult.getTotalHits());
            System.out.println("Results:");
            System.out.print("UniqueId");
            System.out.print("\t");
            System.out.print("Score");
            System.out.print("\t");
            System.out.print("Index");
            System.out.print("\t");
            System.out.print("Shard");
            System.out.print("\t");
            System.out.print("LuceneShardId");
            System.out.print("\t");
            System.out.print("Sort");
            System.out.print("\t");
            if (query.fetch.equalsIgnoreCase("full")) {
                System.out.print("Document");
            }
            System.out.println();
            for (ZuliaQuery.ScoredResult sr : srList) {
                System.out.print(sr.getUniqueId());
                System.out.print("\t");
                System.out.print(df.format(sr.getScore()));
                System.out.print("\t");
                System.out.print(sr.getIndexName());
                System.out.print("\t");
                System.out.print(sr.getShard());
                System.out.print("\t");
                System.out.print(sr.getLuceneShardId());
                System.out.print("\t");
                StringBuffer sb = new StringBuffer();
                if (sr.hasSortValues()) {
                    for (ZuliaQuery.SortValue sortValue : sr.getSortValues().getSortValueList()) {
                        if (sb.length() != 0) {
                            sb.append(",");
                        }
                        if (sortValue.getExists()) {
                            if (sortValue.getDateValue() != 0) {
                                sb.append(new Date(sortValue.getDateValue()));
                            } else if (sortValue.getDoubleValue() != 0) {
                                sb.append(sortValue.getDoubleValue());
                            } else if (sortValue.getFloatValue() != 0) {
                                sb.append(sortValue.getFloatValue());
                            } else if (sortValue.getIntegerValue() != 0) {
                                sb.append(sortValue.getIntegerValue());
                            } else if (sortValue.getLongValue() != 0) {
                                sb.append(sortValue.getLongValue());
                            } else if (sortValue.getStringValue() != null) {
                                sb.append(sortValue.getStringValue());
                            }
                        } else {
                            sb.append("!NULL!");
                        }
                    }
                }
                if (sb.length() != 0) {
                    System.out.print(sb);
                } else {
                    System.out.print("--");
                }
                if (query.fetch != null && query.fetch.equalsIgnoreCase("full")) {
                    System.out.print("\t");
                    if (sr.hasResultDocument()) {
                        ZuliaBase.ResultDocument resultDocument = sr.getResultDocument();
                        if (resultDocument.getDocument() != null) {
                            Document mongoDocument = new Document();
                            mongoDocument.putAll(ZuliaUtil.byteArrayToMongoDocument(resultDocument.getDocument().toByteArray()));
                            System.out.println(mongoDocument.toJson());
                        }
                    }
                }
                System.out.println();
            }
            if (!searchResult.getFacetGroups().isEmpty()) {
                System.out.println("Facets:");
                for (ZuliaQuery.FacetGroup fg : searchResult.getFacetGroups()) {
                    System.out.println();
                    System.out.println("--Facet on " + fg.getCountRequest().getFacetField().getLabel() + "--");
                    for (ZuliaQuery.FacetCount fc : fg.getFacetCountList()) {
                        System.out.print(fc.getFacet());
                        System.out.print("\t");
                        System.out.print(fc.getCount());
                        System.out.print("\t");
                        System.out.print("+" + fc.getMaxError());
                        System.out.println();
                    }
                    if (fg.getPossibleMissing()) {
                        System.out.println("Possible facets missing from top results for <" + fg.getCountRequest().getFacetField().getLabel() + "> with max count <" + fg.getMaxValuePossibleMissing() + ">");
                    }
                }
            }
        } else if ("clear".equals(jCommander.getParsedCommand())) {
            System.out.println("Clearing index: " + index);
            ClearIndexResult response = workPool.execute(new ClearIndex(index));
            System.out.println("Cleared index: " + index);
        } else if ("getCount".equals(jCommander.getParsedCommand())) {
            GetNumberOfDocsResult response = workPool.execute(new GetNumberOfDocs(index));
            System.out.println("Shards: " + response.getShardCountResponseCount());
            System.out.println("Count: " + response.getNumberOfDocs());
            for (ZuliaBase.ShardCountResponse scr : response.getShardCountResponses()) {
                System.out.println("Shard [" + scr.getShardNumber() + "] Count:\n" + scr.getNumberOfDocs());
            }
        } else if ("getCurrentNodes".equals(jCommander.getParsedCommand())) {
            GetNodesResult response = workPool.execute(new GetNodes());
            System.out.println("serverAddress\tservicePort\theartBeat\trestPort\tversion");
            for (ZuliaBase.Node val : response.getNodes()) {
                String nodeVersion = val.getVersion();
                if (nodeVersion == null || nodeVersion.isEmpty()) {
                    nodeVersion = "< " + ZuliaVersion.getVersionAdded();
                }
                System.out.println(val.getServerAddress() + "\t" + val.getServicePort() + "\t" + val.getHeartbeat() + "\t" + val.getRestPort() + "\t" + nodeVersion);
            }
        } else if ("getFields".equals(jCommander.getParsedCommand())) {
            GetFieldsResult response = workPool.execute(new io.zulia.client.command.GetFields(index));
            response.getFieldNames().forEach(System.out::println);
        } else if ("delete".equals(jCommander.getParsedCommand())) {
            System.out.println("Deleting index: " + index);
            DeleteIndexResult response = workPool.execute(new DeleteIndex(index));
            System.out.println("Deleted index: " + index);
        } else if ("reindex".equals(jCommander.getParsedCommand())) {
            if (index.contains("*")) {
                GetIndexesResult indexesResult = workPool.getIndexes();
                for (String ind : indexesResult.getIndexNames()) {
                    if (ind.startsWith(index.replace("*", ""))) {
                        System.out.println("Reindexing index: " + ind);
                        ReindexResult response = workPool.execute(new Reindex(ind));
                        System.out.println("Reindexed index: " + ind);
                    }
                }
            } else {
                System.out.println("Reindexing index: " + index);
                ReindexResult response = workPool.execute(new Reindex(index));
                System.out.println("Reindexed index: " + index);
            }
        } else if ("optimize".equals(jCommander.getParsedCommand())) {
            System.out.println("Optimizing index: " + index);
            OptimizeIndexResult response = workPool.execute(new OptimizeIndex(index));
            System.out.println("Optimized index: " + index);
        }
    } catch (Exception e) {
        if (e instanceof ParameterException) {
            System.err.println(e.getMessage());
            jCommander.usage();
            System.exit(2);
        } else {
            e.printStackTrace();
        }
    }
}
Also used : ZuliaWorkPool(io.zulia.client.pool.ZuliaWorkPool) ZuliaBase(io.zulia.message.ZuliaBase) FilterQuery(io.zulia.client.command.builder.FilterQuery) GetFieldsResult(io.zulia.client.result.GetFieldsResult) Document(org.bson.Document) ScoredQuery(io.zulia.client.command.builder.ScoredQuery) DeleteIndex(io.zulia.client.command.DeleteIndex) Search(io.zulia.client.command.builder.Search) GetIndexes(io.zulia.client.command.GetIndexes) Sort(io.zulia.client.command.builder.Sort) ParameterException(com.beust.jcommander.ParameterException) GetNodes(io.zulia.client.command.GetNodes) GetIndexesResult(io.zulia.client.result.GetIndexesResult) CountFacet(io.zulia.client.command.builder.CountFacet) ReindexResult(io.zulia.client.result.ReindexResult) OptimizeIndexResult(io.zulia.client.result.OptimizeIndexResult) ZuliaQuery(io.zulia.message.ZuliaQuery) Reindex(io.zulia.client.command.Reindex) ClearIndex(io.zulia.client.command.ClearIndex) JCommander(com.beust.jcommander.JCommander) ClearIndexResult(io.zulia.client.result.ClearIndexResult) OptimizeIndex(io.zulia.client.command.OptimizeIndex) SearchResult(io.zulia.client.result.SearchResult) DeleteIndexResult(io.zulia.client.result.DeleteIndexResult) Date(java.util.Date) ParameterException(com.beust.jcommander.ParameterException) GetNumberOfDocs(io.zulia.client.command.GetNumberOfDocs) GetNodesResult(io.zulia.client.result.GetNodesResult) ZuliaPoolConfig(io.zulia.client.config.ZuliaPoolConfig) GetNumberOfDocsResult(io.zulia.client.result.GetNumberOfDocsResult)

Example 2 with Reindex

use of io.zulia.client.command.Reindex in project zuliasearch by zuliaio.

the class SortTest method reindexTest.

@Test
@Order(13)
public void reindexTest() throws Exception {
    ClientIndexConfig indexConfig = new ClientIndexConfig();
    indexConfig.addDefaultSearchField("title");
    indexConfig.addFieldConfig(FieldConfigBuilder.create("id", FieldType.STRING).indexAs(DefaultAnalyzers.LC_KEYWORD).sortAs(// change sort as to be theId instead of just id
    "theId"));
    indexConfig.addFieldConfig(FieldConfigBuilder.create("title", FieldType.STRING).indexAs(DefaultAnalyzers.STANDARD).sort());
    // no longer sortable
    indexConfig.addFieldConfig(FieldConfigBuilder.create("stars", FieldType.NUMERIC_INT).index());
    indexConfig.addFieldConfig(FieldConfigBuilder.create("starsLong", FieldType.NUMERIC_LONG).index().sort());
    // indexConfig.addFieldConfig(FieldConfigBuilder.create("rating", FieldType.NUMERIC_FLOAT).index().sort()); // no longer indexed or sortable
    indexConfig.addFieldConfig(FieldConfigBuilder.create("ratingDouble", FieldType.NUMERIC_FLOAT).index().sort());
    indexConfig.addFieldConfig(FieldConfigBuilder.create("special", FieldType.BOOL).index().sort());
    indexConfig.addFieldConfig(FieldConfigBuilder.create("added", FieldType.DATE).index().sort());
    // sort() adds standard string (case senstive sorting with a field name the same as the stored field
    // sortAs(LOWERCASE_FOLDING, "otherTitleFolding") add another sortable field with a lowercase and ascii folding filter applied to make case insensitive sort and fancy letter insensitive (gotta be a better term here)
    indexConfig.addFieldConfig(FieldConfigBuilder.create("otherTitle", FieldType.STRING).index().sort().sortAs(LOWERCASE_FOLDING, "otherTitleFolding"));
    indexConfig.setIndexName(INDEX_NAME);
    indexConfig.setNumberOfShards(1);
    // force some commits
    indexConfig.setShardCommitInterval(20);
    zuliaWorkPool.createIndex(indexConfig);
    zuliaWorkPool.reindex(new Reindex(INDEX_NAME));
    SearchResult searchResult;
    Search search = new Search(INDEX_NAME).setAmount(1);
    search.addSort(new Sort("otherTitle").ascending().missingLast());
    searchResult = zuliaWorkPool.search(search);
    Assertions.assertEquals("Blah", searchResult.getFirstDocument().get("otherTitle"));
    search.clearSort();
    search.addSort(new Sort("otherTitleFolding").ascending().missingLast());
    search.addSort(new Sort("starts").ascending().missingLast());
    searchResult = zuliaWorkPool.search(search);
    Assertions.assertEquals("blah", searchResult.getFirstDocument().get("otherTitle"));
    search.clearSort();
    search.addSort(new Sort("otherTitle").descending());
    searchResult = zuliaWorkPool.search(search);
    Assertions.assertEquals("still more blah", searchResult.getFirstDocument().get("otherTitle"));
    search.clearSort();
    // use the new sort as id field
    search.addSort(new Sort("theId").descending());
    searchResult = zuliaWorkPool.search(search);
    // sorting as string so this is 99 instead of 199
    Assertions.assertEquals("99", searchResult.getFirstDocument().get("id"));
}
Also used : Search(io.zulia.client.command.builder.Search) ClientIndexConfig(io.zulia.client.config.ClientIndexConfig) Sort(io.zulia.client.command.builder.Sort) SearchResult(io.zulia.client.result.SearchResult) Reindex(io.zulia.client.command.Reindex) Order(org.junit.jupiter.api.Order) TestMethodOrder(org.junit.jupiter.api.TestMethodOrder) Test(org.junit.jupiter.api.Test)

Example 3 with Reindex

use of io.zulia.client.command.Reindex in project zuliasearch by zuliaio.

the class StartStopTest method reindex.

@Test
@Order(4)
public void reindex() throws Exception {
    ClientIndexConfig indexConfig = new ClientIndexConfig();
    indexConfig.addDefaultSearchField("title");
    indexConfig.addFieldConfig(FieldConfigBuilder.create("id", FieldType.STRING).indexAs(DefaultAnalyzers.LC_KEYWORD).sort());
    indexConfig.addFieldConfig(FieldConfigBuilder.create("title", FieldType.STRING).indexAs(DefaultAnalyzers.STANDARD).sort());
    indexConfig.addFieldConfig(FieldConfigBuilder.create("issn", FieldType.STRING).indexAs(DefaultAnalyzers.LC_KEYWORD).facet().sort());
    indexConfig.addFieldConfig(FieldConfigBuilder.create("eissn", FieldType.STRING).indexAs(DefaultAnalyzers.LC_KEYWORD).facet());
    indexConfig.addFieldConfig(FieldConfigBuilder.create("uid", FieldType.STRING).indexAs(DefaultAnalyzers.LC_KEYWORD));
    indexConfig.addFieldConfig(FieldConfigBuilder.create("an", FieldType.NUMERIC_INT).index().displayName("Accession Number").sort());
    indexConfig.addFieldConfig(FieldConfigBuilder.create("country", FieldType.STRING).indexAs(DefaultAnalyzers.LC_KEYWORD).facet().sort());
    indexConfig.addFieldConfig(FieldConfigBuilder.create("date", FieldType.DATE).index().facetAs(DateHandling.DATE_YYYY_MM_DD).description("The very special data").sort());
    indexConfig.addFieldConfig(FieldConfigBuilder.create("testList", FieldType.STRING).index());
    indexConfig.setIndexName(FACET_TEST_INDEX);
    indexConfig.setNumberOfShards(1);
    zuliaWorkPool.createIndex(indexConfig);
    zuliaWorkPool.reindex(new Reindex(FACET_TEST_INDEX));
    Search search = new Search(FACET_TEST_INDEX).addCountFacet(new CountFacet("eissn"));
    SearchResult searchResult = zuliaWorkPool.search(search);
    List<FacetCount> eissnCounts = searchResult.getFacetCounts("eissn");
    Assertions.assertEquals(eissns.length, eissnCounts.size());
    for (FacetCount eissnCount : eissnCounts) {
        Assertions.assertEquals(COUNT_PER_ISSN, eissnCount.getCount());
    }
}
Also used : Search(io.zulia.client.command.builder.Search) ClientIndexConfig(io.zulia.client.config.ClientIndexConfig) SearchResult(io.zulia.client.result.SearchResult) FacetCount(io.zulia.message.ZuliaQuery.FacetCount) Reindex(io.zulia.client.command.Reindex) CountFacet(io.zulia.client.command.builder.CountFacet) Order(org.junit.jupiter.api.Order) TestMethodOrder(org.junit.jupiter.api.TestMethodOrder) Test(org.junit.jupiter.api.Test)

Aggregations

Reindex (io.zulia.client.command.Reindex)3 Search (io.zulia.client.command.builder.Search)3 SearchResult (io.zulia.client.result.SearchResult)3 CountFacet (io.zulia.client.command.builder.CountFacet)2 Sort (io.zulia.client.command.builder.Sort)2 ClientIndexConfig (io.zulia.client.config.ClientIndexConfig)2 Order (org.junit.jupiter.api.Order)2 Test (org.junit.jupiter.api.Test)2 TestMethodOrder (org.junit.jupiter.api.TestMethodOrder)2 JCommander (com.beust.jcommander.JCommander)1 ParameterException (com.beust.jcommander.ParameterException)1 ClearIndex (io.zulia.client.command.ClearIndex)1 DeleteIndex (io.zulia.client.command.DeleteIndex)1 GetIndexes (io.zulia.client.command.GetIndexes)1 GetNodes (io.zulia.client.command.GetNodes)1 GetNumberOfDocs (io.zulia.client.command.GetNumberOfDocs)1 OptimizeIndex (io.zulia.client.command.OptimizeIndex)1 FilterQuery (io.zulia.client.command.builder.FilterQuery)1 ScoredQuery (io.zulia.client.command.builder.ScoredQuery)1 ZuliaPoolConfig (io.zulia.client.config.ZuliaPoolConfig)1