[[running-elasticsearch]] == Running {es} during development There are many ways to run {es} while you are developing. [discrete] === By snapshot This will run a snapshot of {es} that is usually built nightly. Read more about <>. [source,bash] ---- yarn es snapshot ---- See all available options, like how to specify a specific license, with the `--help` flag. [source,bash] ---- yarn es snapshot --help ---- `trial` will give you access to all capabilities. **Keeping data between snapshots** If you want to keep the data inside your {es} between usages of this command, you should use the following command, to keep your data folder outside the downloaded snapshot folder: [source,bash] ---- yarn es snapshot -E path.data=../data ---- === By source If you have the {es} repo checked out locally and wish to run against that, use `source`. By default, it will reference an {es} checkout which is a sibling to the {kib} directory named elasticsearch. If you wish to use a checkout in another location you can provide that by supplying --source-path [source,bash] ---- yarn es source ---- === From an archive Use this if you already have a distributable. For released versions, one can be obtained on the {es} downloads page. [source,bash] ---- yarn es archive ---- Each of these will run {es} with a basic license. Additional options are available, pass --help for more information. === From a remote host You can save some system resources, and the effort of generating sample data, if you have a remote {es} cluster to connect to. (Elasticians: you do! Check with your team about where to find credentials) You'll need to create a kibana.dev.yml (<>) and add the following to it: [source,bash] ---- elasticsearch.hosts: - {{ url }} elasticsearch.username: {{ username }} elasticsearch.password: {{ password }} elasticsearch.ssl.verificationMode: none ---- If many other users will be interacting with your remote cluster, you'll want to add the following to avoid causing conflicts: [source,bash] ---- kibana.index: '.{YourGitHubHandle}-kibana' xpack.task_manager.index: '.{YourGitHubHandle}-task-manager-kibana' ---- ==== Running remote clusters Setup remote clusters for cross cluster search (CCS) and cross cluster replication (CCR). Start your primary cluster by running: [source,bash] ---- yarn es snapshot -E path.data=../data_prod1 ---- Start your remote cluster by running: [source,bash] ---- yarn es snapshot -E transport.port=9500 -E http.port=9201 -E path.data=../data_prod2 ---- Once both clusters are running, start {kib}. {kib} will connect to the primary cluster. Setup the remote cluster in {kib} from either Management -> {es} -> Remote Clusters UI or by running the following script in Console. [source,bash] ---- PUT _cluster/settings { "persistent": { "cluster": { "remote": { "cluster_one": { "seeds": [ "localhost:9500" ] } } } } } ---- Follow the cross-cluster search instructions for setting up index patterns to search across clusters (<>).