private void CreateIndex(AerospikeClient client, Arguments args, IndexCollectionType indexType, string indexName, string binName)
        {
            console.Info("Create GeoJSON {0} index: ns={1} set={2} index={3} bin={4}", indexType, args.ns, args.set, indexName, binName);

            Policy policy = new Policy();
            policy.timeout = 0; // Do not timeout on index create.
            IndexTask task = client.CreateIndex(policy, args.ns, args.set, indexName, binName, IndexType.GEO2DSPHERE, indexType);
            task.Wait();
        }
        private void CreateIndex(AerospikeClient client, Arguments args, string indexName, string binName)
        {
            console.Info("Create index: ns={0} set={1} index={2} bin={3}",
                args.ns, args.set, indexName, binName);

            Policy policy = new Policy();
            policy.timeout = 0; // Do not timeout on index create.
            IndexTask task = client.CreateIndex(policy, args.ns, args.set, indexName, binName, IndexType.NUMERIC);
            task.Wait();
        }
Exemple #3
0
        public static void Main(string[] args)
        {
            String ns = "test";
            String set = "demo";
            String host = "127.0.0.1";
            int port = 3000;
            const int MAX_RECORDS = 1000;
            AerospikeClient client = new AerospikeClient(host, port);
            /*
             * Create an index on list values
             */
            IndexTask creator = client.CreateIndex(null, ns, set,
                "list_value_index", "interests", IndexType.STRING,
                IndexCollectionType.LIST);
            creator.IsDone();
            Console.WriteLine("created list value index");
            /*
             * Create an index on map keys
             */
            creator = client.CreateIndex(null, ns, set,
                "map_key_index", "email", IndexType.STRING,
                IndexCollectionType.MAPKEYS);
            creator.IsDone();
            Console.WriteLine("created map keys index");
            /*
             * Create an index on map keys
             */
            creator = client.CreateIndex(null, ns, set,
                "map_value_index", "email", IndexType.STRING,
                IndexCollectionType.MAPVALUES);
            creator.IsDone();
            Console.WriteLine("created map values index");
            /*
             * Load some data
             */
            String[] possibleInterests = new String[]{"cats", "dogs", "mice", "birds", "snakes", "fish", "pigs", "cows"};
            String[] emailPostFix = new String[]{"@gmail.com", "@hotmail.com", "@yahoo.com"};
            String[] emailType = new String[]{"home", "work", "private"};
            Random rand1 = new Random();
            Random rand2 = new Random();
            for (int i = 0; i < MAX_RECORDS; i++){
            /*
             * create key
             */
                String userName = "******"+i;
                Key key = new Key(ns, set, userName);
                Bin user = new Bin("user", userName);
            /*
             * create interests
             */
                List<String> interestList = new List<String>();
                int interest_count = rand1.Next(possibleInterests.Length-1);
                for (int j = 0; j < interest_count; j++){
                    interestList.Add(possibleInterests[rand2.Next(possibleInterests.Length-1)]);
                }
                Bin interests = new Bin("interests", interestList);
            /*
             * create email addresses
             */
                Dictionary<String, String> emailAddresses = new Dictionary<String, String>();
                int email_count = rand1.Next(emailPostFix.Length-1);
                for (int j = 0; j < email_count; j++){
                    String type = emailType[rand2.Next(emailType.Length-1)];
                    String emailString = userName + emailPostFix[rand2.Next(emailPostFix.Length-1)];
                    emailAddresses.Add(type, emailString);
                }
                Bin emails = new Bin("email", emailAddresses);

                client.Put(null, key, user, interests, emails);

            }
            Console.WriteLine(String.Format("created {0} users", MAX_RECORDS));
            /*
             * Query for users interested in "cats"
             */
            Statement stmt = new Statement();
            stmt.SetNamespace(ns);
            stmt.SetSetName(set);
            stmt.SetBinNames("user", "interests");
            stmt.SetFilters(Filter.Contains("interests", IndexCollectionType.LIST, "cats"));

            RecordSet recordSet = client.Query(null, stmt);

            int recordCount = 0;
            try {
                while(recordSet.Next()){
                    Console.WriteLine(recordSet.Record);
                    recordCount++;
                }

            } finally {
                recordSet.Close();
            }
            Console.WriteLine(String.Format("Found {0} users interested in cats", recordCount));
            /*
             * Query for users with "work" email addresses.
             */
            stmt.SetBinNames("user", "email");
            stmt.SetFilters(Filter.Contains("email", IndexCollectionType.MAPKEYS, "work"));

            recordSet = client.Query(null, stmt);
            recordCount = 0;
            try {
                while(recordSet.Next()){
                    Console.WriteLine(recordSet.Record);
                    recordCount++;
                }

            } finally {
                recordSet.Close();
            }
            Console.WriteLine(String.Format("Found {0} users with work email address", recordCount));
            /*
             * Query for users with email address equal to "*****@*****.**".
             */
            stmt.SetBinNames("user", "email");
            stmt.SetFilters(Filter.Contains("email", IndexCollectionType.MAPVALUES, "*****@*****.**"));

            recordSet = client.Query(null, stmt);

            recordCount = 0;
            try {
                while(recordSet.Next()){
                    Console.WriteLine(recordSet.Record);
                    recordCount++;
                }

            } finally {
                recordSet.Close();
            }
            Console.WriteLine(String.Format("Found {0} users with  email address of [email protected]", recordCount));
        }