-
-
Save simonbasle/103581608159c05ae4f0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import com.couchbase.client.java.Bucket; | |
import com.couchbase.client.java.Cluster; | |
import com.couchbase.client.java.CouchbaseCluster; | |
import com.couchbase.client.java.document.JsonDocument; | |
import com.couchbase.client.java.document.json.JsonObject; | |
import com.couchbase.client.java.query.Query; | |
import com.couchbase.client.java.query.QueryParams; | |
import com.couchbase.client.java.query.QueryResult; | |
import com.couchbase.client.java.query.consistency.ScanConsistency; | |
import static com.couchbase.client.java.query.Select.select; | |
import static com.couchbase.client.java.query.dsl.Expression.i; | |
import static com.couchbase.client.java.query.dsl.Expression.s; | |
import static com.couchbase.client.java.query.dsl.Expression.x; | |
public class ReadYourWriteExample { | |
public static void main(String[] args) { | |
// Connect to the Cluster | |
Cluster cluster = CouchbaseCluster.create(); | |
// Open the travel-sample bucket | |
Bucket bucket = cluster.openBucket("travel-sample"); | |
// Create a new airline (document) | |
bucket.upsert(JsonDocument.create("airline_000", JsonObject.create() | |
.put("id", "000") | |
.put("type", "airline") | |
.put("name", "Couchbase Airways") | |
.put("iata", "CBX") | |
.put("icao", "CBX") | |
.put("callsign", "COUCH-BASE") | |
.put("country", "United States") | |
)); | |
//Ensure that the bucket has a primary index | |
ensureIndex(bucket); | |
// Perform the Query | |
QueryResult result = bucket.query( | |
Query.simple(select("*").from(i(bucket.name())).where(x("iata").eq(s("CBX"))), | |
QueryParams.build().consistency(ScanConsistency.REQUEST_PLUS)) | |
); | |
// Prints | |
// [{"country":"United States","iata":"CBX",...,"icao":"CBX","id":"000","type":"airline"}] | |
System.out.println(result.allRows()); | |
} | |
public static void ensureIndex(Bucket bucket) { | |
System.out.println("Checking index on bucket " + bucket.name()); | |
//Check for the index | |
Query checkIndex = Query.simple( | |
select("*") | |
.from("system:indexes") | |
.where(x("keyspace_id").eq(s("travel-sample")) | |
.and(x("name").eq(s("#primary"))) | |
)); | |
QueryResult queryResult = bucket.query(checkIndex); | |
boolean hasIndex = queryResult.finalSuccess() && queryResult.allRows().size() == 1; | |
if (hasIndex) { | |
System.out.println("found."); | |
return; | |
} | |
System.out.println("not found"); | |
System.out.println("Creating index on " + bucket.name()); | |
//create a primary index on the bucket | |
Query ensureIndex = Query.simple("CREATE PRIMARY INDEX ON `travel-sample`"); | |
queryResult = bucket.query(ensureIndex); | |
//report success or dump errors | |
System.out.println(queryResult.finalSuccess() ? "created." : "not created."); | |
if (queryResult.finalSuccess()) { | |
System.out.println("Index found"); | |
} else { | |
for (JsonObject error : queryResult.errors()) { | |
System.err.println(error); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi Simon,
is the ensureIndex(bucket) on line 35,36 necessary for ScanConsistency.REQUEST_PLUS to work?
regards
Calvin