You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by to...@apache.org on 2014/11/12 20:11:44 UTC
[03/27] incubator-usergrid git commit: Finished updating search by
versions. Removed query use to be more declarative.
Finished updating search by versions. Removed query use to be more declarative.
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/1debf19b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/1debf19b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/1debf19b
Branch: refs/heads/two-dot-o
Commit: 1debf19b30510b3f9f4abe57d8cba88efaec9208
Parents: ef77a5a
Author: Todd Nine <tn...@apigee.com>
Authored: Thu Nov 6 22:02:49 2014 -0700
Committer: Todd Nine <tn...@apigee.com>
Committed: Thu Nov 6 22:02:49 2014 -0700
----------------------------------------------------------------------
.../index/impl/EsEntityIndexBatchImpl.java | 2 +-
.../index/impl/EsEntityIndexImpl.java | 69 ++++++++++++++------
.../persistence/index/impl/EntityIndexTest.java | 9 ---
3 files changed, 49 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1debf19b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexBatchImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexBatchImpl.java b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexBatchImpl.java
index 01f22c0..e6920f5 100644
--- a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexBatchImpl.java
+++ b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexBatchImpl.java
@@ -259,7 +259,7 @@ public class EsEntityIndexBatchImpl implements EntityIndexBatch {
//but the fieldname
//we have to prefix because we use query equality to seek this later. TODO see if we can make this more declarative
- entityMap.put( STRING_PREFIX+ ENTITYID_ID_FIELDNAME, IndexingUtils.idString(entity.getId()).toLowerCase() );
+ entityMap.put( ENTITYID_ID_FIELDNAME, IndexingUtils.idString(entity.getId()).toLowerCase() );
return entityMap;
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1debf19b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java
index d7955c4..cb56c7d 100644
--- a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java
+++ b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java
@@ -232,28 +232,21 @@ public class EsEntityIndexImpl implements EntityIndex {
final String context = IndexingUtils.createContextName( indexScope );
final String[] entityTypes = searchTypes.getTypeNames();
- QueryBuilder qb = query.createQueryBuilder(context);
+ QueryBuilder qb = query.createQueryBuilder( context );
SearchResponse searchResponse;
if ( query.getCursor() == null ) {
SearchRequestBuilder srb = esProvider.getClient().prepareSearch( indexName ).setTypes( entityTypes )
- .setScroll( cursorTimeout + "m" ).setQuery( qb );;
-
-
- //we must add a "must" operation to our entity context.
-
-
- //set our final query
+ .setScroll( cursorTimeout + "m" ).setQuery( qb );
if ( logger.isDebugEnabled() ) {
- logger.debug( "Searching index {}\n scope{} \n type {}\n query {} limit {}", new Object[] {
- this.indexName, context, entityTypes, qb.toString().replace( "\n", " " ), query.getLimit()
- } );
- }
-
+ logger.debug( "Searching index {}\n scope{} \n type {}\n query {} limit {}", new Object[] {
+ this.indexName, context, entityTypes, qb.toString().replace( "\n", " " ), query.getLimit()
+ } );
+ }
final FilterBuilder fb = query.createFilterBuilder();
@@ -287,6 +280,7 @@ public class EsEntityIndexImpl implements EntityIndex {
final FieldSortBuilder stringSort =
SortBuilders.fieldSort( stringFieldName ).order( order ).ignoreUnmapped( true );
srb.addSort( stringSort );
+
logger.debug( " Sort: {} order by {}", stringFieldName, order.toString() );
final String numberFieldName = NUMBER_PREFIX + sp.getPropertyName();
@@ -340,12 +334,21 @@ public class EsEntityIndexImpl implements EntityIndex {
failureMonitor.success();
}
- SearchHits hits = searchResponse.getHits();
- logger.debug( " Hit count: {} Total hits: {}", hits.getHits().length, hits.getTotalHits() );
+ return parseResults( searchResponse, query );
+ }
+
+
+ private CandidateResults parseResults( final SearchResponse searchResponse, final Query query ) {
- List<CandidateResult> candidates = new ArrayList<CandidateResult>();
+ final SearchHits searchHits = searchResponse.getHits();
+ final SearchHit[] hits = searchHits.getHits();
+ final int length = hits.length;
- for ( SearchHit hit : hits.getHits() ) {
+ logger.debug( " Hit count: {} Total hits: {}", length, searchHits.getTotalHits() );
+
+ List<CandidateResult> candidates = new ArrayList<>( length );
+
+ for ( SearchHit hit : hits ) {
String[] idparts = hit.getId().split( SPLITTER );
String id = idparts[0];
@@ -396,10 +399,34 @@ public class EsEntityIndexImpl implements EntityIndex {
@Override
public CandidateResults getEntityVersions( final IndexScope scope, final Id id ) {
- Query query = new Query();
- query.addEqualityFilter( ENTITYID_ID_FIELDNAME, IndexingUtils.idString( id ).toLowerCase() );
- CandidateResults results = search( scope, SearchTypes.fromTypes( id.getType() ), query );
- return results;
+
+ //since we don't have paging inputs, there's no point in executing a query for paging.
+
+ final String context = IndexingUtils.createContextName( scope );
+ final SearchTypes searchTypes = SearchTypes.fromTypes( id.getType() );
+
+ final QueryBuilder queryBuilder = QueryBuilders.termQuery( IndexingUtils.ENTITY_CONTEXT_FIELDNAME, context );
+
+
+ final SearchRequestBuilder srb =
+ esProvider.getClient().prepareSearch( indexName ).setTypes( searchTypes.getTypeNames() )
+ .setScroll( cursorTimeout + "m" ).setQuery( queryBuilder );
+
+
+ final SearchResponse searchResponse;
+ try {
+ searchResponse = srb.execute().actionGet();
+ }
+ catch ( Throwable t ) {
+ logger.error( "Unable to communicate with elasticsearch" );
+ failureMonitor.fail( "Unable to execute batch", t );
+ throw t;
+ }
+
+
+ failureMonitor.success();
+
+ return parseResults( searchResponse, new Query( ) );
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/1debf19b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/EntityIndexTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/EntityIndexTest.java b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/EntityIndexTest.java
index a1240f1..72058ff 100644
--- a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/EntityIndexTest.java
+++ b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/EntityIndexTest.java
@@ -72,15 +72,6 @@ public class EntityIndexTest extends BaseIT {
private static final Logger log = LoggerFactory.getLogger( EntityIndexTest.class );
- @ClassRule
- public static CassandraRule cass = new CassandraRule();
-
- @Rule
- public ElasticSearchResource elasticSearchResource = new ElasticSearchResource();
-
- @Inject
- @Rule
- public MigrationManagerRule migrationManagerRule;
@Inject
public EntityIndexFactory eif;