public class ElasticSearchRestDataContext extends AbstractElasticSearchDataContext
SimpleTableDef
class.Modifier and Type | Field and Description |
---|---|
static String |
DEFAULT_TABLE_NAME |
dynamicTableDefinitions, indexName, staticTableDefinitions, TIMEOUT_SCROLL
INFORMATION_SCHEMA_NAME, SYSTEM_PROPERTY_CREATE_DEFAULT_TABLE_ALIAS
Constructor and Description |
---|
ElasticSearchRestDataContext(org.elasticsearch.client.RestHighLevelClient client,
String indexName)
Constructs a
ElasticSearchRestDataContext and automatically
detects the schema structure/view on an index. |
ElasticSearchRestDataContext(org.elasticsearch.client.RestHighLevelClient client,
String indexName,
SimpleTableDef... tableDefinitions)
Constructs a
ElasticSearchRestDataContext . |
Modifier and Type | Method and Description |
---|---|
protected SimpleTableDef[] |
detectSchema()
Performs an analysis of the available indexes in an ElasticSearch
cluster instance and detects the elasticsearch types structure
based on the metadata provided by the ElasticSearch java client.
|
protected Number |
executeCountQuery(Table table,
List<FilterItem> whereItems,
boolean functionApproximationAllowed)
Executes a simple count query, if possible.
|
protected Row |
executePrimaryKeyLookupQuery(Table table,
List<SelectItem> selectItems,
Column primaryKeyColumn,
Object keyValue)
Executes a query which obtains a row by primary key (as defined by
Column.isPrimaryKey() ). |
UpdateSummary |
executeUpdate(UpdateScript update)
Submits an
UpdateScript for execution on the DataContext . |
ElasticSearchRestClient |
getElasticSearchClient()
Deprecated.
When outside this package just use the injected RestHighLevelClient when instantiating this class.
Inside this package use
getRestHighLevelClient() instead |
protected DataSet |
materializeMainSchemaTable(Table table,
List<Column> columns,
int maxRows)
Executes a simple one-table query against a table in the main schema of the subclasses of this class.
|
protected DataSet |
materializeMainSchemaTable(Table table,
List<SelectItem> selectItems,
List<FilterItem> whereItems,
int firstRow,
int maxRows)
Execute a simple one-table query against a table in the main schema of the subclasses of this class.
|
protected void |
onSchemaCacheRefreshed()
Method invoked when schemas have been refreshed using
AbstractDataContext.refreshSchemas() . |
getIndexName, getMainSchema, getMainSchemaName, limitMaxRowsIsSet, sortTables
addConverter, executeQuery, getDefaultSchemaName, getSchemaByNameInternal, getSchemaNamesInternal, isMainSchemaTable, isScalarFunctionMaterialized, materializeFromItem, materializeMainSchemaTable, materializeMainSchemaTableSelect, materializeTable
compileQuery, executeQuery, executeQuery, getColumnByQualifiedLabel, getDefaultSchema, getSchemaByName, getSchemaNames, getSchemas, getTableByQualifiedLabel, isQualifiedPathDelim, parseQuery, query, refreshSchemas
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
compileQuery, executeQuery, executeQuery, executeQuery, getColumnByQualifiedLabel, getDefaultSchema, getSchemaByName, getSchemaNames, getSchemas, getTableByQualifiedLabel, parseQuery, query, refreshSchemas
public static final String DEFAULT_TABLE_NAME
public ElasticSearchRestDataContext(org.elasticsearch.client.RestHighLevelClient client, String indexName, SimpleTableDef... tableDefinitions)
ElasticSearchRestDataContext
. This constructor
accepts a custom array of SimpleTableDef
s which allows the user
to define his own view on the indexes in the engine.client
- the ElasticSearch clientindexName
- the name of the ElasticSearch index to representtableDefinitions
- an array of SimpleTableDef
s, which define the table
and column model of the ElasticSearch index.public ElasticSearchRestDataContext(org.elasticsearch.client.RestHighLevelClient client, String indexName)
ElasticSearchRestDataContext
and automatically
detects the schema structure/view on an index.client
- the ElasticSearch clientindexName
- the name of the ElasticSearch index to representprotected SimpleTableDef[] detectSchema()
AbstractElasticSearchDataContext
detectSchema
in class AbstractElasticSearchDataContext
protected void onSchemaCacheRefreshed()
AbstractDataContext
AbstractDataContext.refreshSchemas()
. Can be overridden to add
callback functionality in subclasses.onSchemaCacheRefreshed
in class AbstractDataContext
protected DataSet materializeMainSchemaTable(Table table, List<SelectItem> selectItems, List<FilterItem> whereItems, int firstRow, int maxRows)
QueryPostprocessDataContext
QueryPostprocessDataContext.materializeMainSchemaTable(Table, List, int, int)
and apply WHERE item
filtering afterwards.materializeMainSchemaTable
in class QueryPostprocessDataContext
protected DataSet materializeMainSchemaTable(Table table, List<Column> columns, int maxRows)
QueryPostprocessDataContext
materializeMainSchemaTable
in class QueryPostprocessDataContext
table
- the table to querycolumns
- the columns of the table to querymaxRows
- the maximum amount of rows needed or -1 if all rows are wanted.protected Row executePrimaryKeyLookupQuery(Table table, List<SelectItem> selectItems, Column primaryKeyColumn, Object keyValue)
QueryPostprocessDataContext
Column.isPrimaryKey()
). This method is
provided to allow subclasses to optimize lookup queries since they are quite common and often a datastore can
retrieve the row using some specialized means which is much more performant than scanning all records manually.executePrimaryKeyLookupQuery
in class QueryPostprocessDataContext
table
- the table on which the lookup is requested.selectItems
- the items to select from the lookup query.primaryKeyColumn
- the column that is the primary keykeyValue
- the primary key value that is specified in the lookup query.protected Number executeCountQuery(Table table, List<FilterItem> whereItems, boolean functionApproximationAllowed)
QueryPostprocessDataContext
executeCountQuery
in class QueryPostprocessDataContext
table
- the table on which the count is requested.whereItems
- a (sometimes empty) list of WHERE items.functionApproximationAllowed
- whether approximation is allowed or not.public UpdateSummary executeUpdate(UpdateScript update)
UpdateableDataContext
UpdateScript
for execution on the DataContext
.
Since implementations of the DataContext
vary quite a lot, there
is no golden rule as to how an update script will be executed. But the
implementors should strive towards handling an UpdateScript
as a
single transactional change to the data store.update
- the update script to execute@Deprecated public ElasticSearchRestClient getElasticSearchClient()
getRestHighLevelClient()
insteadElasticSearchRestClient
that this DataContext
is wrapping.Copyright © 2007–2021 The Apache Software Foundation. All rights reserved.