{"id":8912,"date":"2020-07-22T10:27:06","date_gmt":"2020-07-22T17:27:06","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=8912"},"modified":"2020-07-24T08:36:36","modified_gmt":"2020-07-24T15:36:36","slug":"elasticsearch-connector-and-ingest-node-pipeline","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/","title":{"rendered":"Using Elasticsearch Connector with Ingest Node Pipeline"},"content":{"rendered":"<p>Recently, as I was exploring our documentation to acquaint myself with the capabilities of Elasticsearch Connector 4.2, I came across a configuration called Pipeline. I was curious to explore and understand what it means and what purpose does this solve. While doing so, I experimented with the connector and its configuration and I wanted to share my experience through this post.<\/p>\n<hr \/>\n<h4><b>Overview<\/b><\/h4>\n<p><span style=\"font-weight: 400\">In this post, we are going to cover replicating and transforming `travel-sample\u2019s` landmark dataset from Couchbase to Elasticsearch using Elasticsearch connector and an Elasticsearch Ingest node pipeline.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Let&#8217;s take a quick look at the different components that we will be using throughout this blog post.<\/span><\/p>\n<p style=\"padding-left: 40px\"><a href=\"https:\/\/docs.couchbase.com\/home\/server.html\"><b>Couchbase<\/b><\/a><span style=\"font-weight: 400\">\u00a0 is an Open Source, distributed, JSON document database. It exposes a scale-out, key-value store with managed cache for sub-millisecond data operations, purpose-built indexers for efficient queries and a powerful query engine for executing SQL-like queries.<\/span><\/p>\n<p style=\"padding-left: 40px\"><a href=\"https:\/\/www.elastic.co\/\"><b>Elasticsearch<\/b><\/a><span style=\"font-weight: 400\"> is a full-text, distributed NoSQL database with a powerful search and analytics engine at the heart of Elastic Stack. Elasticsearch stores documents in Index (sometimes referred to as Indices?) which are analogous to tables in sql world.<\/span><\/p>\n<p style=\"padding-left: 40px\"><a href=\"https:\/\/www.elastic.co\/guide\/en\/elasticsearch\/reference\/current\/pipeline.html\"><b>Ingest Node Pipeline<\/b><\/a><span style=\"font-weight: 400\"> is a powerful tool that Elasticsearch gives you in order to pre-process your documents before they are indexed. An Ingest node pipeline consists of one or more processors that are executed in the order it is declared. Elasticsearch comes with a set of processors out of the box, you can also build a custom processor as needed, for a list of all processors visit the documentation <\/span><a href=\"https:\/\/www.elastic.co\/guide\/en\/elasticsearch\/reference\/current\/ingest-processors.html\"><span style=\"font-weight: 400\">here<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p>\n<p style=\"padding-left: 40px\"><a href=\"https:\/\/docs.couchbase.com\/elasticsearch-connector\/4.2\/getting-started.html\"><b>Elasticsearch Connector<\/b><\/a><span style=\"font-weight: 400\"> is a tool built by Couchbase that enables replication of data from Couchbase to Elasticsearch.<\/span><\/p>\n<p style=\"padding-left: 40px\"><a href=\"https:\/\/www.elastic.co\/kibana\"><b>Kibana<\/b><\/a> <span style=\"font-weight: 400\">is a free and open user interface that lets you visualize your Elasticsearch data and navigate the Elastic Stack. Kibana also enables management and evaluation of Ingest node pipelines.<\/span><\/p>\n<h4><b>Prerequisites &amp; Assumptions<\/b><\/h4>\n<p><span style=\"font-weight: 400\">This post assumes that you have a basic understanding of all of the components as listed above and you are using a computer running macOS to walk through the illustration.<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Install and configure Couchbase Server with a travel-sample dataset by following the instructions <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/install\/install-intro.html\"><span style=\"font-weight: 400\">here<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Install a<\/span> <a href=\"https:\/\/docs.couchbase.com\/elasticsearch-connector\/current\/compatibility.html\"><span style=\"font-weight: 400\">compatible<\/span><\/a><span style=\"font-weight: 400\"> version of java.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4><strong>Get Started<\/strong><\/h4>\n<p><span style=\"font-weight: 400\">Launch a new terminal window and navigate to your user directory located under \/Users\/&lt;username&gt;. Create a new directory called <em><strong>Connectors<\/strong><\/em>. <\/span><span style=\"font-weight: 400\">We will refer to this as <\/span>\u201c<span style=\"color: #3366ff\">BASE_DIR<\/span>\u201d<span style=\"font-weight: 400\"> for the remainder of the post.<\/span><\/p>\n<pre class=\"width-set:true width:650 h-align:2 lang:default decode:true \" title=\"Create BASE_DIR\">mkdir Connectors<\/pre>\n<p>&nbsp;<\/p>\n<h4><b>Install &amp; Launch Elasticsearch and Kibana<\/b><\/h4>\n<ol>\n<li style=\"list-style-type: none\">\n<ol>\n<li style=\"font-weight: 400\">\n<h5><a href=\"https:\/\/www.elastic.co\/start\">Download<\/a> the latest version of Elasticsearch and Kibana and move them into the <span style=\"color: #3366ff\">BASE_DIR<\/span>. You should see two files Elasticsearch-&lt;version&gt;-darwin-x86_64.tar.gz and kibana-&lt;version&gt;-darwin-x86_64.tar.tz.<\/h5>\n<\/li>\n<li style=\"font-weight: 400\">\n<h5><span style=\"font-weight: 400\">Uncompress the downloaded files and rename the directory to <strong>es<\/strong> and <strong>kibana<\/strong><\/span><\/h5>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">\u00a0 Launch a new terminal and navigate to <span style=\"color: #3366ff\">BASE_DIR<\/span><\/span><span style=\"font-weight: 400\">\u00a0and then t<\/span><span style=\"font-weight: 400\">ype the following commands <span style=\"color: #999999\">(<\/span><\/span><span style=\"color: #999999\">one at a time)\u00a0<\/span><\/p>\n<pre class=\"font:verdana height-mode:2 height:250 width-set:true width-mode:2 width:650 h-align:2 show-lang:2 show-plain:1 lang:sh decode:true\" title=\"Uncompress download files \">tar -xzvf elasticsearch-7.8.0-darwin-x86_64.tar.gz &amp;&amp; tar -xzvf kibana-7.8.0-darwin-x86_64.tar.gz<\/pre>\n<pre class=\"font:verdana width-set:true width-mode:2 width:650 h-align:2 lang:sh decode:true\" title=\"Rename the directory to es and kibana\">mv elasticsearch-7.8.0-darwin-x86_64 es &amp;&amp; mv kibana-7.8.0-darwin-x86_64 kibana<\/pre>\n<h5><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a03. Launch Elasticsearch<\/span><\/h5>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\"> Launch a new terminal window and navigate to the directory <span style=\"color: #3366ff\">BASE_DIR<\/span><\/span><span style=\"color: #000000\"><strong>\/es<\/strong><\/span> then t<span style=\"font-weight: 400\">ype the following command<\/span><\/p>\n<pre class=\"font:verdana width-set:true width-mode:2 width:650 h-align:2 lang:sh decode:true\" title=\"Launch Elasticsearch\">bin\/elasticsearch<\/pre>\n<p style=\"text-align: left;padding-left: 40px\"><span style=\"font-weight: 400\">Now open a web browser and navigate to <\/span><a href=\"https:\/\/localhost:9200\"><span style=\"font-weight: 400\">https:\/\/localhost:9200<\/span><\/a><span style=\"font-weight: 400\">.You should see a response like the one below, indicating that the Elasticsearch server is\u00a0 available.<\/span><\/p>\n<p style=\"padding-left: 40px\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8932 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/07\/es_launch.png\" alt=\"Elasticsearch server status\" width=\"1015\" height=\"647\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/es_launch.png 1015w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/es_launch-300x191.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/es_launch-768x490.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/es_launch-20x13.png 20w\" sizes=\"auto, (max-width: 1015px) 100vw, 1015px\" \/><\/p>\n<h5 style=\"padding-left: 40px\"><span style=\"font-weight: 400\">4. Launch Kibana<\/span><\/h5>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">Launch a new terminal window and navigate to the directory <span style=\"color: #3366ff\">BASE_DIR<\/span><\/span><b>\/kibana\u00a0 <\/b>then t<span style=\"font-weight: 400\">ype the following command<\/span><\/p>\n<pre class=\"font:verdana width-set:true width-mode:2 width:650 h-align:2 lang:sh decode:true \" title=\"Launch Kibana\">bin\/kibana<\/pre>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">To see Kibana in action, open a web browser and navigate to <\/span><a href=\"https:\/\/localhost:5601\"><span style=\"font-weight: 400\">https:\/\/localhost:5601<\/span><\/a><span style=\"font-weight: 400\"> .<\/span><\/p>\n<h4 style=\"padding-left: 40px\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8920 size-full\" style=\"background-color: initial;color: #333333;font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: 19px\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/07\/kibana3.png\" alt=\"Kibana status\" width=\"1917\" height=\"962\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/kibana3.png 1917w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/kibana3-300x151.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/kibana3-1024x514.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/kibana3-768x385.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/kibana3-1536x771.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/kibana3-20x10.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/kibana3-1320x662.png 1320w\" sizes=\"auto, (max-width: 1917px) 100vw, 1917px\" \/><\/h4>\n<h4><b>Install Elasticsearch Connector<\/b><\/h4>\n<ol>\n<li style=\"list-style-type: none\">\n<ol>\n<li>\n<h5><a href=\"https:\/\/docs.couchbase.com\/elasticsearch-connector\/current\/release-notes.html\"><span style=\"font-weight: 400\">Download<\/span><\/a><span style=\"font-weight: 400\"> the latest version of Elasticsearch connector and move it to the <span style=\"color: #3366ff\">BASE_DIR<\/span><\/span><i><span style=\"font-weight: 400\">.<\/span><\/i><span style=\"font-weight: 400\"> At the time of writing this post, the most recent version of the connector available is 4.2.2. You should have downloaded a file that looks something like couchbase-elasticsearch-connector-<\/span><b>&lt;version&gt;<\/b><span style=\"font-weight: 400\">.zip.<\/span><\/h5>\n<\/li>\n<li>\n<h5><span style=\"font-weight: 400\">Uncompress the downloaded file and rename the directory to <\/span><b>cbes.<\/b><\/h5>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">Launch a new terminal and navigate to <span style=\"color: #3366ff\">BASE_DIR<\/span><\/span><span style=\"font-weight: 400\">\u00a0 and t<\/span><span style=\"font-weight: 400\">ype the following commands <span style=\"color: #999999\">(<\/span><span style=\"color: #999999\">one at a time)<\/span><\/span><b>. <\/b><span style=\"font-weight: 400\">When prompted enter &#8220;<\/span><b>A&#8221; <\/b><span style=\"font-weight: 400\">to uncompress the files<\/span><\/p>\n<pre class=\"font:verdana height-mode:2 height:250 width-set:true width-mode:2 width:650 h-align:2 show-lang:2 show-plain:1 lang:sh decode:true\" title=\"Uncompress download file\">unzip couchbase-elasticsearch-connector-4.2.2.zip<\/pre>\n<pre class=\"font:verdana width-set:true width-mode:2 width:650 h-align:2 lang:sh decode:true\" title=\"Rename the directory to cbes\">mv couchbase-elasticsearch-connector-4.2.2 cbes<\/pre>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">Now let&#8217;s explore the some of the important directories within <\/span><b>cbes<\/b><\/p>\n<p style=\"padding-left: 40px\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8895 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/07\/cbes.png\" alt=\"cbes installation\" width=\"320\" height=\"476\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/cbes.png 320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/cbes-202x300.png 202w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/cbes-300x446.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/cbes-13x20.png 13w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><\/p>\n<p style=\"padding-left: 40px\"><b>bin<\/b><span style=\"font-weight: 400\"> &#8211; contains all the command line utilities required to help manage connectors.<\/span><\/p>\n<p style=\"padding-left: 40px\"><b>config<\/b><span style=\"font-weight: 400\"> &#8211; contains base configuration file that can be used as reference.<\/span><\/p>\n<p style=\"padding-left: 40px\"><b>secrets<\/b><span style=\"font-weight: 400\"> &#8211; contains credentials to connect to Couchbase and Elasticsearch servers.<\/span><\/p>\n<h4><b>Build Elasticsearch Ingest Node Pipeline<\/b><\/h4>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">Let&#8217;s build our pipeline. We will name it \u201c<\/span><b><i>landmark-pipeline\u201d. <\/i><\/b><span style=\"font-weight: 400\">Our pipeline will<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Insert a new field `<\/span><b>last_update_time`<\/b><span style=\"font-weight: 400\"> which will be the current date-time.\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Convert the data to UPPERCASE for field `<\/span><b>name`<\/b><span style=\"font-weight: 400\">.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">We will be using two of the existing processors to build our ingestion pipeline.<\/span><\/p>\n<p style=\"padding-left: 80px\"><b> Script Processor :<\/b><span style=\"font-weight: 400\"> Executes any script defined by the <\/span><a href=\"https:\/\/www.elastic.co\/guide\/en\/elasticsearch\/reference\/current\/modules-scripting-painless.html\"><span style=\"font-weight: 400\">painless scripting language<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p>\n<p style=\"padding-left: 80px\"><b>Uppercase Processor<\/b><span style=\"font-weight: 400\"> : Converts the specified field\u2019s value into UPPERCASE <\/span><\/p>\n<h5 style=\"padding-left: 40px\"><span style=\"font-weight: 400\">1. Launch a new terminal window and execute the following command<\/span><\/h5>\n<pre class=\"font:verdana width-set:true width-mode:2 width:800 h-align:2 lang:js decode:true \" title=\"Create Ingest Node Pipeline\">curl -X PUT \"localhost:9200\/_ingest\/pipeline\/landmark-pipeline?pretty\" -H 'Content-Type: application\/json' -d'\r\n{\r\n\"description\" : \"Converts the field name to uppercase and creates new field last_update_time \",\r\n\"processors\" : [ { \"uppercase\": { \"field\": \"name\" }, \"script\": { \"lang\": \"painless\", \"source\": \"ctx.last_update_time = new Date();\" } } ]\r\n}'<\/pre>\n<h6 style=\"padding-left: 40px\"><strong><span style=\"color: #339966\"><i>\u00a0 \u00a0 <span style=\"text-decoration: underline\">The curl command above creates and saves a pipeline definition within Elasticsearch database.<\/span><\/i><\/span><\/strong><\/h6>\n<h5 style=\"padding-left: 40px\"><span style=\"font-weight: 400\">2.\u00a0 Open a web browser and navigate to Kibana at <\/span><a href=\"https:\/\/localhost:5601\"><span style=\"font-weight: 400\">https:\/\/localhost:5601<\/span><\/a><span style=\"font-weight: 400\">. You should be able to see the pipeline that you had just created under Discover <strong>-&gt;<\/strong>\u00a0 \u00a0 \u00a0 \u00a0 Ingest Node Pipelines.<\/span><\/h5>\n<p style=\"padding-left: 40px\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8923 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/07\/pipeline2.png\" alt=\"Ingest Node Pipeline installed\" width=\"1922\" height=\"1045\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/pipeline2.png 1922w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/pipeline2-300x163.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/pipeline2-1024x557.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/pipeline2-768x418.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/pipeline2-1536x835.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/pipeline2-20x11.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/pipeline2-1320x718.png 1320w\" sizes=\"auto, (max-width: 1922px) 100vw, 1922px\" \/><\/p>\n<h4><b>Configure Elasticsearch Connector<\/b><\/h4>\n<h5 style=\"padding-left: 40px\"><span style=\"font-weight: 400\">1. Launch a new terminal window and navigate to <span style=\"color: #3366ff\">BASE_DIR<\/span><\/span><i><span style=\"font-weight: 400\">\/<\/span><\/i><b>cbes\/config<\/b><\/h5>\n<h5 style=\"padding-left: 40px\"><b><\/b><span style=\"font-weight: 400\">2. Copy the file <span style=\"color: #999999\">example-connector.toml<\/span> and name it as <strong><span style=\"color: #999999\">default-connector.toml<\/span><\/strong>\u00a0by executing the following command<\/span><\/h5>\n<pre class=\"font:verdana width-set:true width:650 h-align:2 lang:sh decode:true\" title=\"Copy and Rename configuration file\" style=\"padding-left: 40px\">cp example-connector.toml default-connector.toml<\/pre>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">Connector assumes the existence of a configuration file default-connector.toml\u00a0 and reads this file for any configuration. However you can also specify the configuration when deploying the connector by using a &#8211; -config command line option. For this post we will use the default configuration.<\/span><\/p>\n<h5 style=\"padding-left: 40px\"><span style=\"font-weight: 400\">3. Open default-connector.toml in the editor of your choice and modify the following configuration settings.If you want further information about the Elasticsearch Connector configuration settings, go <\/span><a href=\"https:\/\/docs.couchbase.com\/elasticsearch-connector\/current\/configuration.html\"><span style=\"font-weight: 400\">here<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/h5>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">\u00a0If you want to skip this step, a complete modified configuration file can be found <\/span><a href=\"https:\/\/gist.github.com\/AV25242\/5d82aca8b00d940729cff5a982bdab08\"><span style=\"font-weight: 400\">here<\/span><\/a><span style=\"font-weight: 400\">.\u00a0\u00a0<\/span><\/p>\n<h6 style=\"padding-left: 40px;text-align: left\"><strong><span style=\"color: #339966\"><em>Tip:\u00a0 If this is your first time working with the TOML config file format, check out Nate Finch\u2019s excellent<a style=\"color: #339966\" href=\"https:\/\/npf.io\/2014\/08\/intro-to-toml\/\"> Intro to TOML<\/a>, or the<a style=\"color: #339966\" href=\"https:\/\/github.com\/toml-lang\/toml\"> official specification<\/a>.\u00a0<\/em><\/span><\/strong><\/h6>\n<p style=\"padding-left: 80px\"><span style=\"font-weight: 400\">\u00a0a ) Under the <em>[<\/em><\/span><em><span style=\"font-weight: 400\">group]<\/span><\/em><span style=\"font-weight: 400\"> table, set the name key to \u201clandmark-example-group\u201d<\/span><\/p>\n<pre class=\"font:verdana width-set:true width:650 h-align:2 lang:default decode:true\" title=\"Toml Configuration\">[group]\r\nname = 'landmark-example-group'<\/pre>\n<p><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0b) Under the <em>[elasticsearch.docStructure] <\/em>table, set the documentContentAtTopLevel key to \u201ctrue\u201d <\/span><i><span style=\"font-weight: 400\">\u00a0<\/span><\/i><\/p>\n<pre class=\"font:verdana width-set:true width:650 h-align:2 lang:default decode:true\" title=\"Toml Configuration\">[elasticsearch.docStructure]\r\ndocumentContentAtTopLevel = true<\/pre>\n<p style=\"padding-left: 80px\"><span style=\"font-weight: 400\">c) Remove any existing <em>[[elasticsearch.type]]<\/em> tables and replace\u00a0 with the following.<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0\u00a0<\/span><\/p>\n<pre class=\"font:verdana width-set:true width:650 h-align:2 lang:default decode:true\" title=\"Toml Configuration\">[[elasticsearch.type]]\r\nprefix = '_sync:'\r\nignore = true\r\n\r\n[[elasticsearch.type]]\r\nprefix = 'landmark_'\r\nindex = 'landmark'\r\npipeline = 'landmark-pipeline'<\/pre>\n<h4 style=\"padding-left: 40px\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8931 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/07\/config2.gif\" alt=\"Elasticsearch Configuration\" width=\"1891\" height=\"902\" \/><\/h4>\n<h4><\/h4>\n<h4><b>Deploy Elasticsearch Connector<\/b><\/h4>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">You are all set. It&#8217;s time to see all of this in action now.<\/span><\/p>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">Elasticsearch connectors can be deployed three different modes\u00a0<\/span><\/p>\n<p style=\"padding-left: 40px\"><b>Solo<\/b><span style=\"font-weight: 400\"> :\u00a0 This is the simplest mode where the connector runs as a standalone process. Solo mode is preferable in a low-traffic environment or in a development environment.<\/span><\/p>\n<p style=\"padding-left: 40px\"><b>Distributed <\/b><span style=\"font-weight: 400\">: In this mode multiple connectors run as different processes. In a scenario when the traffic is moderate to high, this mode is recommended. Unlike the solo mode where only one dedicated process does the whole work, in a distributed mode there is more than one process and each connector is configured independently to share the workload.<\/span><\/p>\n<p style=\"padding-left: 40px\"><b>Autonomous Operations Mode : <\/b><span style=\"font-weight: 400\">This can be thought through as a distributed mode managed by a coordinated service. The coordinated service takes care of service discovery and configuration management. Unlike the distributed mode where the processes need to be stopped and restarted before adding and removing a connector process, the coordinated service automatically distributes the workload when a worker process is added or removed even in failure cases.<\/span><\/p>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">For this post we will be deploying the connector in a Solo mode. Before starting the connector let&#8217;s verify the document count at the source in Couchbase.<\/span><\/p>\n<h5 style=\"padding-left: 40px\"><span style=\"font-weight: 400\">1. Open a web browser\u00a0 and navigate to Couchbase cluster for instance <\/span><a href=\"https:\/\/127.0.0.1:8091\/ui\/index.html\"><span style=\"font-weight: 400\">https:\/\/127.0.0.1:8091\/ui\/index.htm<\/span><\/a><span style=\"font-weight: 400\">l<\/span><\/h5>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">Go to Query menu and execute the following query<\/span><\/p>\n<pre class=\"font:verdana width-set:true width-mode:2 width:650 h-align:2 lang:tsql decode:true\" title=\"Get document count\">SELECT COUNT(*)\r\nFROM `travel-sample`\r\nWHERE META().id LIKE \u2018landmark_%\u2019<\/pre>\n<h6 style=\"padding-left: 40px\"><strong><span style=\"color: #339966\"><em>This query should return the count of documents in the travel-sample bucket where the document key begins with \u201clandmark_\u201d. In our case the count is 4495 documents.<\/em><\/span><\/strong><\/h6>\n<p style=\"padding-left: 40px\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8938 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/07\/query.png\" alt=\"Couchbase Querybench Editor\" width=\"1467\" height=\"715\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/query.png 1467w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/query-300x146.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/query-1024x499.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/query-768x374.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/query-20x10.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/query-1320x643.png 1320w\" sizes=\"auto, (max-width: 1467px) 100vw, 1467px\" \/><\/p>\n<h5 style=\"padding-left: 40px\"><span style=\"font-weight: 400\">2. Let&#8217;s start our connector. <\/span><\/h5>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">Launch a new terminal window and navigate to <span style=\"color: #3366ff\">BASE_DIR<\/span><strong>\/cbes<\/strong> directory and t<\/span><span style=\"font-weight: 400\">ype the following command<\/span><\/p>\n<pre class=\"font:verdana width-set:true width:650 h-align:2 lang:sh decode:true\" title=\"Deploy Elasticsearch Connector\">bin\/cbes<\/pre>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">The connector should start copying documents <span style=\"color: #808080\"><span style=\"color: #000000\">(<\/span><em>where document key begins with &#8220;landmark_&#8221;<\/em><span style=\"color: #000000\">)<\/span><\/span> from the Couchbase <\/span><span style=\"font-weight: 400\">travel-sample<\/span><span style=\"font-weight: 400\"> bucket into Elasticsearch. While this happens, the Ingest node pipeline will convert the values for name to uppercase and also create a last_update_time field.<\/span><\/p>\n<h5 style=\"padding-left: 40px\"><span style=\"font-weight: 400\">3. Now let\u2019s verify if the desired transformations were applied when the documents were replicated.<\/span><\/h5>\n<p style=\"padding-left: 80px\"><span style=\"font-weight: 400\">Open a new browser and navigate to Kibana at <\/span><a href=\"https:\/\/localhost:5601\"><span style=\"font-weight: 400\">https:\/\/localhost:5601<\/span><\/a><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Navigate to <\/span><span style=\"font-weight: 400\">Discover -&gt; Index Patterns and Define an Index pattern. You should see landmark as a choice.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Next Navigate to Index Management under Discover -&gt; Index Management. It should show you the desired document count (4495).<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">To see the actual document with transformation, open a new browser window and navigate to Kibana at <\/span><a href=\"https:\/\/localhost:5601\"><span style=\"font-weight: 400\">https:\/\/localhost:5601.<\/span><\/a> Navigate to Discover and on the right hand side under _source you should see <b>\u201c&gt;\u201d <\/b>symbol. Click on it and then click on JSON. You should see the document as below<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p style=\"padding-left: 40px\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8930 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/07\/final2.gif\" alt=\"Results\" width=\"1891\" height=\"822\" \/><\/p>\n<h4><strong>Repeat\u00a0<\/strong><\/h4>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">If you want to try the same example with the same dataset but a different processor, or if you encountered an error and you want to start it all over, it&#8217;s very simple. All you need to do is\u00a0<\/span><\/p>\n<ol>\n<li style=\"list-style-type: none\">\n<ol>\n<li style=\"list-style-type: none\">\n<ol>\n<li style=\"font-weight: 400\">\n<h5><span style=\"font-weight: 400\">Stop the process running Kibana <span style=\"color: #999999\">(<\/span><span style=\"color: #999999\">press control + C)\u00a0<\/span><\/span><\/h5>\n<\/li>\n<li style=\"font-weight: 400\">\n<h5><span style=\"font-weight: 400\">Delete all data from Elasticsearch by launching<\/span> a new terminal and typing the following command<\/h5>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<pre class=\"font:verdana width-set:true width-mode:2 width:650 h-align:2 lang:sh decode:true\" title=\"Clean Elasticsearch Data\">curl -X DELETE 'https:\/\/localhost:9200\/_all'<\/pre>\n<h5 style=\"padding-left: 40px\"><span style=\"font-weight: 400\">\u00a0 \u00a03.\u00a0 Stop the process running Elasticsearch connector <\/span><span style=\"font-weight: 400\"><span style=\"color: #999999\">(<\/span><span style=\"color: #999999\">press control + C)\u00a0<\/span><\/span><\/h5>\n<h5 style=\"padding-left: 40px\"><span style=\"font-weight: 400\">\u00a0 \u00a04. C<\/span><span style=\"font-weight: 400\">lear connector checkpoint by launching<\/span><span style=\"font-weight: 400\"> a new terminal and typing the following command<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0<\/span><\/h5>\n<pre class=\"font:verdana width-set:true width-mode:2 width:650 h-align:2 lang:sh decode:true \" title=\"Clear Connector Checkpoint\">cbes-checkpoint-clear<\/pre>\n<h5><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 5. Restart Kibana, modify pipeline , modify connector configuration as desired and restart the connector.<\/span><\/h5>\n<hr \/>\n<h4><b>Conclusion<\/b><\/h4>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">We have examined how to use the Couchbase Elasticsearch connector, to replicate a dataset from Couchbase to Elasticsearch in a solo mode using an Ingest node pipeline. Now you\u2019re ready to explore different Pipeline processors and configuration settings within Elasticsearch connector.<\/span><\/p>\n<p style=\"padding-left: 40px\"><span style=\"color: #000000\">Finally a <\/span><span style=\"color: #000080\">&#8220;BIG THANK YOU&#8221;<\/span> to my colleagues\u00a0 Matt Ingenthron, David Nault and Jared Casey for helping me get to the finish line of this blog !<\/p>\n<p style=\"padding-left: 40px\"><span style=\"font-weight: 400\">If you liked this post or have any questions please leave your comments.<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently, as I was exploring our documentation to acquaint myself with the capabilities of Elasticsearch Connector 4.2, I came across a configuration called Pipeline. I was curious to explore and understand what it means and what purpose does this solve. [&hellip;]<\/p>\n","protected":false},"author":58641,"featured_media":8936,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,2242,1816,2389,2201],"tags":[1295,1292],"ppma_author":[9111],"class_list":["post-8912","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-connectors","category-couchbase-server","category-solutions","category-tools-sdks","tag-connectors","tag-elasticsearch"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using Elasticsearch Connector with Ingest Node Pipeline - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Replicating data from Couchbase to Elasticsearch using Elasticsearch Connector and Ingest Node Pipeline\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using Elasticsearch Connector with Ingest Node Pipeline\" \/>\n<meta property=\"og:description\" content=\"Replicating data from Couchbase to Elasticsearch using Elasticsearch Connector and Ingest Node Pipeline\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-22T17:27:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-24T15:36:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/07\/Elasticity-Blog-Banner.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"411\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Arun Vijayraghavan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Arun Vijayraghavan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/\"},\"author\":{\"name\":\"Arun Vijayraghavan\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/159f967ae0328d6bd25d6389be35e843\"},\"headline\":\"Using Elasticsearch Connector with Ingest Node Pipeline\",\"datePublished\":\"2020-07-22T17:27:06+00:00\",\"dateModified\":\"2020-07-24T15:36:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/\"},\"wordCount\":1613,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/Elasticity-Blog-Banner.jpg\",\"keywords\":[\"connectors\",\"elasticsearch\"],\"articleSection\":[\"Application Design\",\"Connectors\",\"Couchbase Server\",\"Solutions\",\"Tools &amp; SDKs\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/\",\"name\":\"Using Elasticsearch Connector with Ingest Node Pipeline - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/Elasticity-Blog-Banner.jpg\",\"datePublished\":\"2020-07-22T17:27:06+00:00\",\"dateModified\":\"2020-07-24T15:36:36+00:00\",\"description\":\"Replicating data from Couchbase to Elasticsearch using Elasticsearch Connector and Ingest Node Pipeline\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/Elasticity-Blog-Banner.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/Elasticity-Blog-Banner.jpg\",\"width\":900,\"height\":411,\"caption\":\"Elasticsearch Connector in Action\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using Elasticsearch Connector with Ingest Node Pipeline\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/159f967ae0328d6bd25d6389be35e843\",\"name\":\"Arun Vijayraghavan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/042b27309bc3f10ef696264d6a250a75\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c4ecf222f7ec7d1f7bb6305543ab979690ed30f98bbc8fa806ffca5bf8cf3dd8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c4ecf222f7ec7d1f7bb6305543ab979690ed30f98bbc8fa806ffca5bf8cf3dd8?s=96&d=mm&r=g\",\"caption\":\"Arun Vijayraghavan\"},\"description\":\"Arun Vijayraghavan is the Principal Product Manager for SDK and Connectors at Couchbase. As a customer obsessed product leader, he strives to shape the future of products, making critical decisions between performance, features, and time-to-market. He has a demonstrated ability and an established track record of over 20 years of providing strategic guidance to companies to launch developer platforms and new products in order to pull together the single vision of maximizing business value of the product. Arun holds dual master degree's in Physics and Information Technology.\",\"sameAs\":[\"https:\/\/www.couchbase.com\",\"https:\/\/www.linkedin.com\/in\/avijayraghavan\/\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/arun-vijayraghavan\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using Elasticsearch Connector with Ingest Node Pipeline - The Couchbase Blog","description":"Replicating data from Couchbase to Elasticsearch using Elasticsearch Connector and Ingest Node Pipeline","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/","og_locale":"en_US","og_type":"article","og_title":"Using Elasticsearch Connector with Ingest Node Pipeline","og_description":"Replicating data from Couchbase to Elasticsearch using Elasticsearch Connector and Ingest Node Pipeline","og_url":"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-07-22T17:27:06+00:00","article_modified_time":"2020-07-24T15:36:36+00:00","og_image":[{"width":900,"height":411,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/07\/Elasticity-Blog-Banner.jpg","type":"image\/jpeg"}],"author":"Arun Vijayraghavan","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Arun Vijayraghavan","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/"},"author":{"name":"Arun Vijayraghavan","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/159f967ae0328d6bd25d6389be35e843"},"headline":"Using Elasticsearch Connector with Ingest Node Pipeline","datePublished":"2020-07-22T17:27:06+00:00","dateModified":"2020-07-24T15:36:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/"},"wordCount":1613,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/Elasticity-Blog-Banner.jpg","keywords":["connectors","elasticsearch"],"articleSection":["Application Design","Connectors","Couchbase Server","Solutions","Tools &amp; SDKs"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/","url":"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/","name":"Using Elasticsearch Connector with Ingest Node Pipeline - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/Elasticity-Blog-Banner.jpg","datePublished":"2020-07-22T17:27:06+00:00","dateModified":"2020-07-24T15:36:36+00:00","description":"Replicating data from Couchbase to Elasticsearch using Elasticsearch Connector and Ingest Node Pipeline","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/Elasticity-Blog-Banner.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/Elasticity-Blog-Banner.jpg","width":900,"height":411,"caption":"Elasticsearch Connector in Action"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/elasticsearch-connector-and-ingest-node-pipeline\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using Elasticsearch Connector with Ingest Node Pipeline"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/159f967ae0328d6bd25d6389be35e843","name":"Arun Vijayraghavan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/042b27309bc3f10ef696264d6a250a75","url":"https:\/\/secure.gravatar.com\/avatar\/c4ecf222f7ec7d1f7bb6305543ab979690ed30f98bbc8fa806ffca5bf8cf3dd8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c4ecf222f7ec7d1f7bb6305543ab979690ed30f98bbc8fa806ffca5bf8cf3dd8?s=96&d=mm&r=g","caption":"Arun Vijayraghavan"},"description":"Arun Vijayraghavan is the Principal Product Manager for SDK and Connectors at Couchbase. As a customer obsessed product leader, he strives to shape the future of products, making critical decisions between performance, features, and time-to-market. He has a demonstrated ability and an established track record of over 20 years of providing strategic guidance to companies to launch developer platforms and new products in order to pull together the single vision of maximizing business value of the product. Arun holds dual master degree's in Physics and Information Technology.","sameAs":["https:\/\/www.couchbase.com","https:\/\/www.linkedin.com\/in\/avijayraghavan\/"],"url":"https:\/\/www.couchbase.com\/blog\/author\/arun-vijayraghavan\/"}]}},"authors":[{"term_id":9111,"user_id":58641,"is_guest":0,"slug":"arun-vijayraghavan","display_name":"Arun Vijayraghavan","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/c4ecf222f7ec7d1f7bb6305543ab979690ed30f98bbc8fa806ffca5bf8cf3dd8?s=96&d=mm&r=g","author_category":"","last_name":"Vijayraghavan","first_name":"Arun","job_title":"","user_url":"https:\/\/www.couchbase.com","description":"Arun Vijayraghavan is the Principal Product Manager for SDK and Connectors at Couchbase. As a customer obsessed product leader, he strives to shape the future of products, making critical decisions between performance, features, and time-to-market. He has a demonstrated ability and an established track record of over 20 years of providing strategic guidance to companies to launch developer platforms and new products in order to pull together the single vision of maximizing business value of the product. Arun holds dual master degree's in Physics and Information Technology."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/8912","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/58641"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=8912"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/8912\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/8936"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=8912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=8912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=8912"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=8912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}