.. _es-guide-reference-groovy-api-client:

======
Client
======

Obtaining an elasticsearch Groovy **GClient** (a **GClient** is a simple wrapper on top of the Java **Client**) is simple. The most common way to get a client is by starting an embedded **Node** which acts as a node within the cluster.


Node Client
===========

A Node based client is the simplest form to get a **GClient** to start executing operations against elasticsearch.


.. code-block:: js

    import org.elasticsearch.groovy.node.GNode
    import org.elasticsearch.groovy.node.GNodeBuilder
    import static org.elasticsearch.groovy.node.GNodeBuilder.*
    
    // on startup
    
    GNode node = nodeBuilder().node();
    GClient client = node.client();
    
    // on shutdown
    
    node.close();


Since elasticsearch allows to configure it using JSON based settings, the configuration itself can be done using a closure that represent the JSON:


.. code-block:: js

    import org.elasticsearch.groovy.node.GNode
    import org.elasticsearch.groovy.node.GNodeBuilder
    import static org.elasticsearch.groovy.node.GNodeBuilder.*
    
    // on startup
    
    GNodeBuilder nodeBuilder = nodeBuilder();
    nodeBuilder.settings {
        node {
            client = true
        }
        cluster {
            name = "test"
        }
    }
    
    GNode node = nodeBuilder.node()
    
    // on shutdown
    
    node.stop().close()

