This chapter provides a quick introduction to using the core Query Console features.
To begin using Query Console, open a browser and enter the URL:
http://your_host:8000
If the application does not appear, you may not have sufficient privileges. To use Query Console, you must be a member of the qconsole-user
role. If your privileges are insufficient, contact your MarkLogic Server administrator.
Query Console does not grant extra access to databases or documents. To perform operations such as document insertion or deletion or database exploration from Query Console, you must have appropriate security privileges.
The first time you launch Query Console, you should see a page similar to the following:
You should only have one Query Console session active at a time for any given MarkLogic user. Query Console saves state to MarkLogic Server. If a user has multiple Query Console sessions active concurrently, the state can become inconsistent. For example, do not log into Query Console as the same user in multiple browsers or browser tabs.
This section walks you through creating a new query.
The following example assumes an empty workspace named Workspace
, populated only with the default initial XQuery query, named Query 1
. This is the configuration you see the first time you launch Query Console.
hello
. Notice the name changes in the tab and in the workspace panel on the right.You can also rename a query by double-clicking its name in the workspace panel.
The Query Type determines the evaluation context for your query when you run it. The supported query languages are:
The following example shows a native SPARQL query with the Query Type set appropriately.
In XQuery and JavaScript, Query Console displays suggestions for matching functions, variables, and keywords as you type. For example:
If you click on a suggestion, Query Console adds the suggestion text to your query. For example, if you select documentGet
in the list above, then the following text is entered into your query. You can replace the suggestion parameters with values appropriate to your task.
For a function, Query Console also display reference documentation to the right of the suggestions. For example:
Follow this procedure to evaluate a query and view the results. You should already have entered your query in the query editor and selected the appropriate Query Type. If not, refer to Creating a Query.
Each query has its own Results display tab, so you can switch between queries without losing the results of a run.
Each time you run a particular query, the results tab reports how long the query took and the time difference between the current and previous run. For example:
If your query returns a sequence of values, Query console reports the number of items in the sequence so you can distinguish between returning a sequence of one item versus a single item (not in a sequence).
Query Console supports two modes for displaying query results, Auto and Raw. The default mode is Auto. In Auto mode, your query results are formatted for readability based on the query and the output type. For example:
In Auto mode, you can override the default rendering using the format dropdown at the far right of the results pane.
For example, strings are rendered as text by default, but if you know the string contains serialized JSON, you can change the rendering to JSON to get syntax highlighting and tree controls. The choices on the format dropdown depend on the type of data returned by your query.
Raw mode always displays plain text, but it is not necessarily the query results exactly as returned from MarkLogic Server. Slight formatting changes are still applied to improve readability. For example, even in Raw mode, an XQuery sequence or JavaScript Sequence displays as line items.
Each time you modify a query and evaluate it, Query Console saves the contents and time of execution in the Query History. Query Console maintains a separate history for each query.
Query Console adds a history entry for each unique version of a query. If the query text is unchanged between runs or if the changes create a duplicate of an existing history entry for the query, Query Console does not create a new entry.
Query Console saves at most 50 history entries.
To remove a history entry, click the delete (X) button in the upper right corner of the entry.
To close the history dropdown, click on the Query History dropdown again, or simply move the mouse outside the dropdown.
You can use Query Console to profile the performance of an XQuery or Server-Side JavaScript query. For XQuery, Query Console profiles your query as if you passed your query to prof:invoke,
and then displays a performance report in the results pane.
Profiling must be enabled on an App Server before you can profile a query. It is enabled by default when you create an App Server. For details, see Enabling Profiling on an App Server in the Query Performance and Tuning Guide.
Use the following procedure to profile a query:
In XQuery, your Query Console query appears as the .main
module in the profiling report. In JavaScript, your query appears as (program)
.
When profiling a JavaScript query, you can click on the download icon in the upper right of the profiling report to save your profiling data in format that can be imported into the Profiles
tab of the Chrome browser developer tools.
For details on profiling queries and the meaning of the profile report columns, see Profiling Requests to Evaluate Performance in Query Performance and Tuning Guide.
You can use Query Console to view the query plan for a SQL or SPARQL query. Two types of query plan are available: the estimated plan and the actual plan.
When a SQL, SPARQL, or Optic API query is executed, it is first parsed into a tree of operators that will compute the results of the query when executed. This query plan tree is then rearranged by MarkLogic's query optimizer to produce a more efficient query execution strategy.
Viewing a query plan shows a graphical representation of the operators used, arranged in a tree structure that shows the flow of information from the leaves (data accessors), via operators (joins, filters, etc.) to the root where the query result will be returned. Each query plan operator displays its name, and a table of pertinent information about the operator. Further information is available in tooltips by hovering over either the title, costs, or table display areas of the operator information box.
It's beyond the scope of this walkthrough to detail everything about the information shown by the query plan viewer. Further information can be found by watching the following videos:
MarkLogic Optic Engine Deep Dive: Query Plans and Operators
MarkLogic Optic Engine Deep Dive: Optimization
In MarkLogic 10.0-8, the Query Plan Viewer does not work with the Windows IE 11 browser.
The estimated plan can be used to understand how the query will be executed, and how the query optimizer has assigned costs and chosen that query plan.
The estimated plan is available before the query has been executed. It contains a graphical representation of information on the costs assigned to each query plan operator by the query optimizer. This representation uses a row of red shaded shapes below the operator title - each shape is a different cost metric, and the deeper the shade of colour the higher the value of the metric is compared to the maximum value for that metric across all operators in the plan.
To view the estimated plan, switch to the tab in the results pane. The query plan display is not updated automatically, so the "Generate" button needs to be clicked to update the display if the query has changed since the plan was last viewed.
The actual plan can be used to understand how a query executed, and where memory and time were spent during that query execution.
The actual plan is only available after the query has been executed. It is only produced if the check box on the "Actual Plan" tab is activated, and the instrumentation used to create it reduces the performance of the query executed. The actual plan contains a graphical representation of information for each operator that is measured during the query execution, including row count, execution time, and peak memory usage. This representation uses a row of red shaded shapes below the operator title - each shape is a different execution metric, and the deeper the shade of colour the higher the value of the metric is compared to the maximum value for that metric across all operators in the plan.
To view the actual plan, slide the check box on the "Actual Plan" tab to on, and run the query using the run button. After this, switching to the "Actual Plan" tab will display the query plan annotated with runtime information.
Use the Explorer feature to browse the contents of a database. This topic explains how to use the Explorer to explore the contents of a database. You can also use the Explorer to modify database contents; for details, see Editing Database Content.
For each document in the database, the summary includes the document URI, the type and name of the root node, a link to the document properties, and a link to any collections to which the document belongs.
Use the search box of the Explorer to explore only a specific document or the documents that match a wildcard expression. The match uses the same semantics as the XQuery function cts:uri-match or the Server-Side JavaScript function cts.uriMatch.
The URI lexicon must be enabled on the database you are exploring. You will get an error if the URI lexicon is not enabled.
The following semantics apply to filtering by URI:
The following table contains some examples of filtering expressions:
You can use the Explorer to modify your database content without writing code. See the following topics for details:
You can only insert or update content. You cannot modify metadata such as permissions and properties.
You can insert a new document into a database from the Explorer. You must be logged into Query Console as a user with sufficient privileges to create the document in the database.
You cannot set the metadata for the new document using the Explorer. New documents are created with default permissions, collections, quality, properties, and key-value metadata, as when calling xdmp:document-insert or xdmp.documentInsert with no options.
Use the following procedure to create a new document:
You can modify an existing document in a database from the Explorer. You must be logged into Query Console as a user with sufficient privileges to create the document in the database.
You cannot modify the metadata for a document using the Explorer.
Note that when you view a document in the Explorer, Query Console prettyprints what you see to make it more readable. When you edit a document, the contents are displayed exactly as stored in the database, so the content displayed in the editor may look different.
Use the following procedure to create a new document:
If the document changes during the edit session, Query Console displays a dialog that enables you to discard your changes, reload the editor with the new content, or overwrite the new content your changes.
You can delete documents without writing code using the Explorer. You can only delete documents from the database if you have sufficient privileges for the operation.
Use the following procedure to delete documents:
You can select all documents currently displayed by the Explorer by clicking the check box on column header:
Only documents with URIs shown in the document list are deleted. For example, if you filter the document list by URI or collection and select all, only the filtered list is affected. Similarly, if your database contains 100 documents, but only documents 1-50 are shown in the Explorer, then only documents 1-50 are selected for deletion.
In Query Console, you organize your queries in workspaces. You can create multiple workspaces. However, only one workspace is active at a time. When you create a new query, Query Console automatically saves it in the active workspace.
Use the workspace panel on the upper right of the page to interact with or change the active workspace. The workspace panel shows the name of the active workspace and lists the queries it contains:
To see a list of available workspaces or to create, clone, delete, import or export a workspace, use the dropdown menu to the right of the workspace name:
To rename a workspace, double-click on the workspace name at the top of the workspace panel:
You can re-order the list of queries in a workspace by dragging and dropping the query items in the workspace panel. You can also reorder queries in the editor panel by dragging and dropping the query tabs.
To create a new workspace that contains the same queries as an existing workspace:
When you clone a workspace, all the queries in the original workspace are copied to the new workspace. Query histories are not copied.
To delete a workspace and all of the queries it contains:
If you delete the last workspace, Query Console automatically creates a workspace with the default initial contents.
Export a workspace to share it with another user or use it on a different MarkLogic Server instance. Exporting a workspace saves the workspace and queries to an external file which can be imported back into Query Console. Query history is not exported.
To import a previously exported workspace into Query Console:
To cancel the import, click anywhere outside the dialog box.
Import
to load the workspace. A loading progress window displays.If a workspace already exists with same name as the imported workspace, the imported workspace name is modified by appending a unique number to the name.