// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
= image:kamelets/elasticsearch-search-source.svg[] ElasticSearch Index Source

*Provided by: "Apache Software Foundation"*

*Support Level for this Kamelet is: "Preview"*

Search data on ElasticSearch

== Configuration Options

The following table summarizes the configuration options available for the `elasticsearch-search-source` Kamelet:
[width="100%",cols="2,^2,3,^2,^2,^3",options="header"]
|===
| Property| Name| Description| Type| Default| Example
| *clusterName {empty}* *| ElasticSearch Cluster Name| Name of the cluster.| string| | 
| *hostAddresses {empty}* *| Host Addresses| Comma separated list with ip:port formatted remote transport addresses to use.| string| | 
| *indexName {empty}* *| Index in ElasticSearch| The name of the index to act against.| string| | 
| *query {empty}* *| Query| The query we want to use to search on ElasticSearch.| string| | 
| enableSSL| Enable SSL| Do we want to connect using SSL?| boolean| `true`| 
| password| Password| Password to connect to ElasticSearch.| string| | 
| period| Period| The time interval between two searches| integer| `1000`| 
| user| Username| Username to connect to ElasticSearch.| string| | 
|===

NOTE: Fields marked with ({empty}*) are mandatory.

== Usage

This section summarizes how the `elasticsearch-search-source` can be used in various contexts.

=== Knative Source

The `elasticsearch-search-source` Kamelet can be used as Knative source by binding it to a Knative object.

.elasticsearch-search-source-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: elasticsearch-search-source-binding
spec:
  source:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: elasticsearch-search-source
    properties:
      clusterName: "The ElasticSearch Cluster Name"
      hostAddresses: "The Host Addresses"
      indexName: "The Index in ElasticSearch"
      query: "The Query"
  sink:
    ref:
      kind: InMemoryChannel
      apiVersion: messaging.knative.dev/v1
      name: mychannel
  
----
Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.

Save the `elasticsearch-search-source-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the source using the following command:

[source,shell]
----
kubectl apply -f elasticsearch-search-source-binding.yaml
----

==== *Dependencies*

The Kamelet needs the following dependencies:


- camel:core

- camel:kamelet

- camel:timer

- mvn:org.apache.camel.k:camel-k-kamelet-reify

- camel:elasticsearch-rest

- camel:gson
 

==== *Binding to Knative using the Kamel CLI:*

The procedure described above can be simplified into a single execution of the `kamel bind` command:

[source,shell]
----
kamel bind elasticsearch-search-source -p "source.clusterName=The ElasticSearch Cluster Name" -p "source.hostAddresses=The Host Addresses" -p "source.indexName=The Index in ElasticSearch" -p "source.query=The Query" channel/mychannel
----

This will create the KameletBinding under the hood and apply it to the current namespace in the cluster.

=== Kafka Source

The `elasticsearch-search-source` Kamelet can be used as Kafka source by binding it to a Kafka topic.

.elasticsearch-search-source-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: elasticsearch-search-source-binding
spec:
  source:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: elasticsearch-search-source
    properties:
      clusterName: "The ElasticSearch Cluster Name"
      hostAddresses: "The Host Addresses"
      indexName: "The Index in ElasticSearch"
      query: "The Query"
  sink:
    ref:
      kind: KafkaTopic
      apiVersion: kafka.strimzi.io/v1beta1
      name: my-topic
  
----

Ensure that you've installed https://strimzi.io/[Strimzi] and created a topic named `my-topic` in the current namespace.
Make also sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.

Save the `elasticsearch-search-source-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the source using the following command:

[source,shell]
----
kubectl apply -f elasticsearch-search-source-binding.yaml
----

==== *Binding to Kafka using the Kamel CLI:*

The procedure described above can be simplified into a single execution of the `kamel bind` command:

[source,shell]
----
kamel bind elasticsearch-search-source -p "source.clusterName=The ElasticSearch Cluster Name" -p "source.hostAddresses=The Host Addresses" -p "source.indexName=The Index in ElasticSearch" -p "source.query=The Query" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic
----

This will create the KameletBinding under the hood and apply it to the current namespace in the cluster.

// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
