Free and Open, Distributed, RESTful Search Engine

Overview

Elasticsearch

A Distributed RESTful Search Engine

https://www.elastic.co/products/elasticsearch

Elasticsearch is a distributed RESTful search engine built for the cloud. Features include:

  • Distributed and Highly Available Search Engine.

    • Each index is fully sharded with a configurable number of shards.

    • Each shard can have one or more replicas.

    • Read / Search operations performed on any of the replica shards.

  • Multi-tenant.

    • Support for more than one index.

    • Index level configuration (number of shards, index storage, etc.).

  • Various set of APIs

    • HTTP RESTful API

    • All APIs perform automatic node operation rerouting.

  • Document oriented

    • No need for upfront schema definition.

    • Schema can be defined for customization of the indexing process.

  • Reliable, Asynchronous Write Behind for long term persistency.

  • Near real-time search.

  • Built on top of Apache Lucene

    • Each shard is a fully functional Lucene index

    • All the power of Lucene easily exposed through simple configuration and plugins.

  • Per operation consistency

    • Single document-level operations are atomic, consistent, isolated, and durable.

Getting Started

First of all, DON’T PANIC. It will take 5 minutes to get the gist of what Elasticsearch is all about.

Installation

  • Download and unpack the Elasticsearch official distribution.

  • Run bin/elasticsearch on Linux or macOS. Run bin\elasticsearch.bat on Windows.

  • Run curl -X GET http://localhost:9200/ to verify Elasticsearch is running.

For more options, see Starting Elasticsearch.

Indexing

First, index some sample JSON documents. The first request automatically creates the my-index-000001 index.

curl -X POST 'http://localhost:9200/my-index-000001/_doc?pretty' -H 'Content-Type: application/json' -d '
{
  "@timestamp": "2099-11-15T13:12:00",
  "message": "GET /search HTTP/1.1 200 1070000",
  "user": {
    "id": "kimchy"
  }
}'

curl -X POST 'http://localhost:9200/my-index-000001/_doc?pretty' -H 'Content-Type: application/json' -d '
{
  "@timestamp": "2099-11-15T14:12:12",
  "message": "GET /search HTTP/1.1 200 1070000",
  "user": {
    "id": "elkbee"
  }
}'

curl -X POST 'http://localhost:9200/my-index-000001/_doc?pretty' -H 'Content-Type: application/json' -d '
{
  "@timestamp": "2099-11-15T01:46:38",
  "message": "GET /search HTTP/1.1 200 1070000",
  "user": {
    "id": "elkbee"
  }
}'

Next, use a search request to find any documents with a user.id of kimchy.

curl -X GET 'http://localhost:9200/my-index-000001/_search?q=user.id:kimchy&pretty=true'

Instead of a query string, you can use Elasticsearch’s Query DSL in the request body.

curl -X GET 'http://localhost:9200/my-index-000001/_search?pretty=true' -H 'Content-Type: application/json' -d '
{
  "query" : {
    "match" : { "user.id": "kimchy" }
  }
}'

You can also retrieve all documents in my-index-000001.

curl -X GET 'http://localhost:9200/my-index-000001/_search?pretty=true' -H 'Content-Type: application/json' -d '
{
  "query" : {
    "match_all" : {}
  }
}'

During indexing, Elasticsearch automatically mapped the @timestamp field as a date. This lets you run a range search.

curl -X GET 'http://localhost:9200/my-index-000001/_search?pretty=true' -H 'Content-Type: application/json' -d '
{
  "query" : {
    "range" : {
      "@timestamp": {
        "from": "2099-11-15T13:00:00",
        "to": "2099-11-15T14:00:00"
      }
    }
  }
}'

Multiple indices

Elasticsearch supports multiple indices. The previous examples used an index called my-index-000001. You can create another index, my-index-000002, to store additional data when my-index-000001 reaches a certain age or size. You can also use separate indices to store different types of data.

You can configure each index differently. The following request creates my-index-000002 with two primary shards rather than the default of one. This may be helpful for larger indices.

curl -X PUT 'http://localhost:9200/my-index-000002?pretty' -H 'Content-Type: application/json' -d '
{
  "settings" : {
    "index.number_of_shards" : 2
  }
}'

You can then add a document to my-index-000002.

curl -X POST 'http://localhost:9200/my-index-000002/_doc?pretty' -H 'Content-Type: application/json' -d '
{
  "@timestamp": "2099-11-16T13:12:00",
  "message": "GET /search HTTP/1.1 200 1070000",
  "user": {
    "id": "kimchy"
  }
}'

You can search and perform other operations on multiple indices with a single request. The following request searches my-index-000001 and my-index-000002.

curl -X GET 'http://localhost:9200/my-index-000001,my-index-000002/_search?pretty=true' -H 'Content-Type: application/json' -d '
{
  "query" : {
    "match_all" : {}
  }
}'

You can omit the index from the request path to search all indices.

curl -X GET 'http://localhost:9200/_search?pretty=true' -H 'Content-Type: application/json' -d '
{
  "query" : {
    "match_all" : {}
  }
}'

Distributed, highly available

Let’s face it; things will fail…​

Elasticsearch is a highly available and distributed search engine. Each index is broken down into shards, and each shard can have one or more replicas. By default, an index is created with 1 shard and 1 replica per shard (1/1). Many topologies can be used, including 1/10 (improve search performance) or 20/1 (improve indexing performance, with search executed in a MapReduce fashion across shards).

To play with the distributed nature of Elasticsearch, bring more nodes up and shut down nodes. The system will continue to serve requests (ensure you use the correct HTTP port) with the latest data indexed.

Where to go from here?

We have just covered a tiny portion of what Elasticsearch is all about. For more information, please refer to the elastic.co website. General questions can be asked on the Elastic Forum or on Slack. The Elasticsearch GitHub repository is reserved for bug reports and feature requests only.

Building from source

Elasticsearch uses Gradle for its build system.

To build a distribution for your local OS and print its output location upon completion, run:

./gradlew localDistro

To build a distribution for another platform, run the related command:

./gradlew :distribution:archives:linux-tar:assemble
./gradlew :distribution:archives:darwin-tar:assemble
./gradlew :distribution:archives:windows-zip:assemble

To build distributions for all supported platforms, run:

./gradlew assemble

Finished distributions are output to distributions/archives.

See the TESTING for more information about running the Elasticsearch test suite.

Upgrading from older Elasticsearch versions

To ensure a smooth upgrade process from earlier versions of Elasticsearch, please see our upgrade documentation for more details on the upgrade process.

Issues
  • WIP draft for ClusterStateReusingStreamInput

    WIP draft for ClusterStateReusingStreamInput

    We read various objects from the wire that already exist in the cluster state. The most notable is DiscoveryNode which can consume ~2kB in heap for each fresh object, but rarely changes, so it's pretty wasteful to use fresh objects here. There could be thousands (millions?) of DiscoveryNode objects in flight from various TransportNodesAction responses.

    This branch introduces ClusterStateReusingStreamInput which lets the caller capture an appropriate ClusterState from which to re-use DiscoveryNode objects if appropriate.

    Relates #77266

    :Distributed/Allocation v8.0.0 
    opened by DaveCTurner 0
  • support ability to disable coordinating node role

    support ability to disable coordinating node role

    Now every node in elaticsearch is implicitly a coordinating node. And this special role cannot be disabled. We have two scenarios where we want to disable coordinating role:

    1. Dedicated master nodes:Coordinating role is dangerous for master nodes.
    2. Traffic forwarding nodes:we hope that some nodes just work as gateway of the cluster and forward all requests to other nodes.

    Dose elastic have any plans for this feature? Looking forward to your reply.

    >enhancement needs:triage 
    opened by jgq2008303393 0
  • Cancelling retrieval of multiple `SnapshotInfo` does not always complete the task

    Cancelling retrieval of multiple `SnapshotInfo` does not always complete the task

    Elasticsearch version (bin/elasticsearch --version): master, 7.14.1

    Description of the problem including expected versus actual behavior:

    If the retrieval of multiple SnapshotInfo blobs is cancelled (e.g. you make a get-snapshots call and then close the connection) then we clear the queue and call context.onFailure here:

    https://github.com/elastic/elasticsearch/blob/c0a967e952fcc9ad3b107509aa3e96179ba455d3/server/src/main/java/org/elasticsearch/repositories/blobstore/BlobStoreRepository.java#L1516-L1520

    However the context will only complete the outer listener once it's received snapshotIds.size() notifications (unless abortOnFailure is set) so by clearing the queue we leak the task.

    FWIW we also log at WARN for every worker that encounters an exception, including cancellation. Cancellation is to be expected, we shouldn't log anything above DEBUG.

    >bug :Distributed/Snapshot/Restore Team:Distributed 
    opened by DaveCTurner 1
  • Ability to run `_forcemerge?only_expunge_deletes=true` via schedule in ILM

    Ability to run `_forcemerge?only_expunge_deletes=true` via schedule in ILM

    With https://github.com/elastic/elasticsearch/pull/77478 being introduced, it might be useful if ILM had the ability to call _forcemerge?only_expunge_deletes=true periodically. This would allow users to avoid custom tooling if they have a use case where _forcemerge?only_expunge_deletes=true is performed regularly to free up disk space.

    >enhancement needs:triage 
    opened by n0othing 0
  • Remove XCombinedFieldQuery workaround

    Remove XCombinedFieldQuery workaround

    This change removes the XCombinedFieldQuery workaround introduced in #74678 as the fix is integrated into Lucene 8.10.

    Relates #74678

    >non-issue :Search/Search v8.0.0 Team:Search v7.16.0 
    opened by dnhatn 1
  • Fix GeoShapeWithDocValuesIT#testMappingUpdate

    Fix GeoShapeWithDocValuesIT#testMappingUpdate

    The error message we get when trying to update the strategy depends on the version which the mapping was created.

    fixes https://github.com/elastic/elasticsearch/issues/77755

    >test :Analytics/Geo v8.0.0 Team:Analytics 
    opened by iverase 1
  • Add release notes for 7.14.2 release.

    Add release notes for 7.14.2 release.

    preview

    >docs Team:Docs v7.15.0 v7.16.0 v7.14.2 v7.14.3 
    opened by henningandersen 0
  • Detecting hidden indices takes nontrivial time

    Detecting hidden indices takes nontrivial time

    Metadata$Builder#build is called on every node in every cluster state update that changes the cluster metadata. In a busy cluster with many shards, this means it's on a fairly hot path. Profiling cluster state updates in such a cluster indicates that this method spends about 23% of its time calling Setting#get:

    image

    The only such call is this one:

    https://github.com/elastic/elasticsearch/blob/411d7e7df86e2e484491ea775e7884c46342c37e/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java#L1436

    Frequently-accessed settings in IndexMetadata are generally made into fields to avoid having to do the lookup work on each access. We can make a substantial time saving in this method by moving the index.hidden setting to a field.

    >enhancement :Core/Infra/Core Team:Core/Infra 
    opened by DaveCTurner 1
  • failed to serialize outbound message [Response{778394113}{false}{false}{false}{class org.elasticsearch.action.admin.cluster.stats.ClusterStatsNodeResponse

    failed to serialize outbound message [Response{778394113}{false}{false}{false}{class org.elasticsearch.action.admin.cluster.stats.ClusterStatsNodeResponse

    Elasticsearch version (bin/elasticsearch --version): 7.14.0

    Plugins installed: []

    JVM version (java -version): openjdk version "1.8.0_242" OpenJDK Runtime Environment (build 1.8.0_242-b08) OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)

    OS version (uname -a if on a Unix-like system): Linux 3.10.0-1127.el7.x86_64 #1 SMP Tue Feb 18 16:39:12 EST 2020 x86_64 x86_64 x86_64 GNU/Linux

    Description of the problem including expected versus actual behavior:

    Cluster status is green,

    {
      "cluster_name" : "******",
      "status" : "green",
      "timed_out" : false,
      "number_of_nodes" : 4,
      "number_of_data_nodes" : 3,
      "active_primary_shards" : 213,
      "active_shards" : 390,
      "relocating_shards" : 0,
      "initializing_shards" : 0,
      "unassigned_shards" : 0,
      "delayed_unassigned_shards" : 0,
      "number_of_pending_tasks" : 0,
      "number_of_in_flight_fetch" : 0,
      "task_max_waiting_in_queue_millis" : 0,
      "active_shards_percent_as_number" : 100.0
    }
    
    

    however cluster stats shows two failed nodes

    {
      "_nodes" : {
        "total" : 4,
        "successful" : 2,
        "failed" : 2,
        "failures" : [
          {
            "type" : "failed_node_exception",
            "reason" : "Failed node [iZZhcgQNSzyxyKlc8JtP6A]",
            "node_id" : "iZZhcgQNSzyxyKlc8JtP6A",
            "caused_by" : {
              "type" : "illegal_state_exception",
              "reason" : "Negative longs unsupported, use writeLong or writeZLong for negative numbers [-1089]"
            }
          },
          {
            "type" : "failed_node_exception",
            "reason" : "Failed node [fIBQM07-QiaABb73sYjjpw]",
            "node_id" : "fIBQM07-QiaABb73sYjjpw",
            "caused_by" : {
              "type" : "illegal_state_exception",
              "reason" : "Negative longs unsupported, use writeLong or writeZLong for negative numbers [-1182]"
            }
          }
        ]
      },
    

    This also causes monitoring cluster to not display anything (not sure whether they are related)

    Below log is displayed in node logs

    Provide logs (if relevant):

    [2021-09-17T10:01:03,243][WARN ][o.e.t.OutboundHandler    ]  failed to serialize outbound message [Response{2808893}{false}{false}{false}{class org.elasticsearch.action.admin.clust
    er.node.stats.NodeStats}]
    java.lang.IllegalStateException: Negative longs unsupported, use writeLong or writeZLong for negative numbers [-1096]
            at org.elasticsearch.common.io.stream.StreamOutput.writeVLong(StreamOutput.java:288) ~[elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.ingest.IngestStats$Stats.writeTo(IngestStats.java:186) ~[elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.ingest.IngestStats.writeTo(IngestStats.java:92) ~[elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.common.io.stream.StreamOutput.writeOptionalWriteable(StreamOutput.java:972) ~[elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.action.admin.cluster.node.stats.NodeStats.writeTo(NodeStats.java:279) ~[elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.transport.OutboundMessage.serialize(OutboundMessage.java:69) ~[elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.transport.OutboundHandler.sendMessage(OutboundHandler.java:140) [elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.transport.OutboundHandler.sendResponse(OutboundHandler.java:118) [elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.transport.TcpTransportChannel.sendResponse(TcpTransportChannel.java:52) [elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.transport.TaskTransportChannel.sendResponse(TaskTransportChannel.java:41) [elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.action.support.nodes.TransportNodesAction$NodeTransportHandler.messageReceived(TransportNodesAction.java:282) [elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.action.support.nodes.TransportNodesAction$NodeTransportHandler.messageReceived(TransportNodesAction.java:275) [elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.transport.SecurityServerTransportInterceptor$ProfileSecuredRequestHandler$1.doRun(SecurityServerTransportInterceptor.java:259) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26) [elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.transport.SecurityServerTransportInterceptor$ProfileSecuredRequestHandler$3.onResponse(SecurityServerTransportInterceptor.java:317) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.transport.SecurityServerTransportInterceptor$ProfileSecuredRequestHandler$3.onResponse(SecurityServerTransportInterceptor.java:307) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authz.AuthorizationService.lambda$authorizeAction$4(AuthorizationService.java:281) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authz.AuthorizationService$AuthorizationResultListener.onResponse(AuthorizationService.java:689) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authz.AuthorizationService$AuthorizationResultListener.onResponse(AuthorizationService.java:664) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.action.support.ContextPreservingActionListener.onResponse(ContextPreservingActionListener.java:31) [elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authz.RBACEngine.authorizeClusterAction(RBACEngine.java:154) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authz.AuthorizationService.authorizeAction(AuthorizationService.java:283) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authz.AuthorizationService.maybeAuthorizeRunAs(AuthorizationService.java:266) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authz.AuthorizationService.lambda$authorize$1(AuthorizationService.java:230) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:134) [elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.action.support.ContextPreservingActionListener.onResponse(ContextPreservingActionListener.java:31) [elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authz.RBACEngine.lambda$resolveAuthorizationInfo$1(RBACEngine.java:127) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:134) [elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authz.store.CompositeRolesStore.roles(CompositeRolesStore.java:165) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authz.store.CompositeRolesStore.getRoles(CompositeRolesStore.java:250) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authz.RBACEngine.getRoles(RBACEngine.java:133) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authz.RBACEngine.resolveAuthorizationInfo(RBACEngine.java:121) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authz.AuthorizationService.authorize(AuthorizationService.java:232) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.transport.ServerTransportFilter$NodeProfile.lambda$inbound$1(ServerTransportFilter.java:130) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:134) [elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authc.AuthenticationService$Authenticator.lambda$authenticateAsync$0(AuthenticationService.java:336) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authc.AuthenticationService$Authenticator.lambda$lookForExistingAuthentication$8(AuthenticationService.java:414) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authc.AuthenticationService$Authenticator.lookForExistingAuthentication(AuthenticationService.java:425) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authc.AuthenticationService$Authenticator.authenticateAsync(AuthenticationService.java:333) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authc.AuthenticationService$Authenticator.access$000(AuthenticationService.java:274) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.authc.AuthenticationService.authenticate(AuthenticationService.java:184) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.transport.ServerTransportFilter$NodeProfile.inbound(ServerTransportFilter.java:121) [x-pack-security-7.14.0.jar:7.14.0]
            at org.elasticsearch.xpack.security.transport.SecurityServerTransportInterceptor$ProfileSecuredRequestHandler.messageReceived(SecurityServerTransportInterceptor.java:328) [x-pack-security-7.14.0.jar:7.14.0]
    at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:61) [elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.transport.InboundHandler$1.doRun(InboundHandler.java:212) [elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:732) [elasticsearch-7.14.0.jar:7.14.0]
            at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:26) [elasticsearch-7.14.0.jar:7.14.0]
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) [?:?]
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) [?:?]
            at java.lang.Thread.run(Thread.java:831) [?:?]
    
    >bug :Data Management/Stats Team:Data Management 
    opened by ptamba 2
  • Use Objects.equals to compare searchHit.getId() in ElasticsearchMatchers

    Use Objects.equals to compare searchHit.getId() in ElasticsearchMatchers

    Use Objects.equals to compare searchHit.getId() in ElasticsearchMatchers to avoid NullPointerException, thanks

    :Search/Search v8.0.0 Team:Search external-contributor 
    opened by skyguard1 1
Releases(v8.0.0-alpha2)
  • v8.0.0-alpha2(Sep 16, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/master/release-notes-8.0.0-alpha2.html

    Source code(tar.gz)
    Source code(zip)
  • v7.14.1(Sep 1, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.14/release-notes-7.14.1.html

    Source code(tar.gz)
    Source code(zip)
  • v8.0.0-alpha1(Aug 10, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/master/release-notes-8.0.0-alpha1.html

    Source code(tar.gz)
    Source code(zip)
  • v6.8.18(Aug 3, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/6.8/release-notes-6.8.18.html

    Source code(tar.gz)
    Source code(zip)
  • v7.14.0(Aug 3, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.14/release-notes-7.14.0.html

    Source code(tar.gz)
    Source code(zip)
  • v7.13.4(Jul 20, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.13/release-notes-7.13.4.html

    Source code(tar.gz)
    Source code(zip)
  • v6.8.17(Jul 7, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/6.8/release-notes-6.8.17.html

    Source code(tar.gz)
    Source code(zip)
  • v7.13.3(Jul 7, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.13/release-notes-7.13.3.html

    Source code(tar.gz)
    Source code(zip)
  • v7.13.2(Jun 14, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.13/release-notes-7.13.2.html

    Source code(tar.gz)
    Source code(zip)
  • v7.13.1(Jun 2, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.13/release-notes-7.13.1.html

    Source code(tar.gz)
    Source code(zip)
  • v7.13.0(May 25, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.13/release-notes-7.13.0.html

    Source code(tar.gz)
    Source code(zip)
  • v6.8.16(May 25, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/6.8/release-notes-6.8.16.html

    Source code(tar.gz)
    Source code(zip)
  • v7.12.1(Apr 27, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.12/release-notes-7.12.1.html

    Source code(tar.gz)
    Source code(zip)
  • v7.12.0(Mar 23, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.12/release-notes-7.12.0.html

    Source code(tar.gz)
    Source code(zip)
  • v6.8.15(Mar 23, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/6.8/release-notes-6.8.15.html

    Source code(tar.gz)
    Source code(zip)
  • v7.11.2(Mar 10, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.11/release-notes-7.11.2.html

    Source code(tar.gz)
    Source code(zip)
  • v7.11.1(Feb 17, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.11/release-notes-7.11.1.html

    Source code(tar.gz)
    Source code(zip)
  • v7.11.0(Feb 10, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.11/release-notes-7.11.0.html

    Source code(tar.gz)
    Source code(zip)
  • v6.8.14(Feb 10, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/6.8/release-notes-6.8.14.html

    Source code(tar.gz)
    Source code(zip)
  • v7.10.2(Jan 14, 2021)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/release-notes-7.10.2.html

    Source code(tar.gz)
    Source code(zip)
  • v7.10.1(Dec 9, 2020)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/release-notes-7.10.1.html

    Source code(tar.gz)
    Source code(zip)
  • v7.10.0(Nov 11, 2020)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/release-notes-7.10.0.html

    Source code(tar.gz)
    Source code(zip)
  • v7.9.3(Oct 22, 2020)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.9/release-notes-7.9.3.html

    Source code(tar.gz)
    Source code(zip)
  • v6.8.13(Oct 22, 2020)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/6.8/release-notes-6.8.13.html

    Source code(tar.gz)
    Source code(zip)
  • v7.9.2(Sep 24, 2020)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.9/release-notes-7.9.2.html

    Source code(tar.gz)
    Source code(zip)
  • v7.9.1(Sep 3, 2020)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.9/release-notes-7.9.1.html

    Source code(tar.gz)
    Source code(zip)
  • v7.9.0(Aug 18, 2020)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.9/release-notes-7.9.0.html

    Source code(tar.gz)
    Source code(zip)
  • v6.8.12(Aug 18, 2020)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/6.8/release-notes-6.8.12.html

    Source code(tar.gz)
    Source code(zip)
  • v7.8.1(Jul 27, 2020)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.8/release-notes-7.8.1.html

    Source code(tar.gz)
    Source code(zip)
  • v6.8.11(Jul 27, 2020)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/6.8/release-notes-6.8.11.html

    Source code(tar.gz)
    Source code(zip)
Apache Superset is a Data Visualization and Data Exploration Platform

Superset A modern, enterprise-ready business intelligence web application. Why Superset? | Supported Databases | Installation and Configuration | Rele

The Apache Software Foundation 40.5k Sep 22, 2021
AWStats Log Analyzer project (official sources)

AWStats - Advanced Web Statistics AWStats (Advanced Web Statistics) is a powerful, full-featured web server logfile analyzer which shows you all your

Laurent Destailleur 251 Sep 22, 2021
ThinkUp gives you insights into your social networking activity on Twitter, Facebook, Instagram, and beyond.

ThinkUp, social media insights engine ThinkUp is a free, installable web application that gives you insights into your activity on social networks lik

ThinkUp LLC 3.3k Sep 6, 2021
A damn-sexy, open source real-time dashboard builder for IOT and other web mashups. A free open-source alternative to Geckoboard.

freeboard free·board (noun) *\ˈfrē-ˌbȯrd* the distance between the waterline and the main deck or weather deck of a ship or between the level of the w

freeboard 6.2k Sep 14, 2021
Countly helps you get insights from your application. Available self-hosted or on private cloud.

Countly Analytics Website • Docs • Try demo • Slack group • Community forum Table of Contents What is Countly? What is included? What can Countly trac

Countly Team 4.8k Sep 15, 2021
Cloud-native web, mobile and event analytics, running on AWS and GCP

Snowplow Snowplow is an enterprise-strength marketing and product analytics platform. It does three things: Identifies your users, and tracks the way

Snowplow Analytics 5.8k Sep 18, 2021
📈 Collect customer event data from your apps. (Note that this project only includes the API collector, not the visualization platform)

Rakam Rakam is an analytics platform that allows you to create your analytics services. Features / Goals Rakam is a modular analytics platform that gi

null 781 Sep 14, 2021
Socioboard is world's first and open source Social Technology Enabler. Socioboard Core is our flagship product.

Socioboard is world’s first open source social technology enabler and first open source product company from India. We build social technology which h

Sumit Ghosh 534 Sep 21, 2021
🚨 DISCONTINUED🚨 IGMonitoring - Free, self hosted Instagram Analytics and Stats

?? IG Monitoring ends its way ?? The open source version will still be available on github, but will no longer be developed or actively supported. IG

Paweł Jakimowski 283 Sep 3, 2021
GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser.

GoAccess What is it? GoAccess is an open source real-time web log analyzer and interactive viewer that runs in a terminal on *nix systems or through y

Gerardo O. 13.8k Sep 15, 2021
Easy web analytics. No tracking of personal data.

GoatCounter is an open source web analytics platform available as a hosted service (free for non-commercial use) or self-hosted app. It aims to offer

zgoat 2.2k Sep 15, 2021
Java rank checker for SEO

LEGACY CODE DISCLAIMER Old application in survival mode. Bug won't be fixed and PR won't be merged. Feel free to fork it but you better rewrite it fro

SERP Hacker 578 Aug 17, 2021
Fathom Lite. Simple, privacy-focused website analytics. Built with Golang & Preact.

Fathom Lite - simple website analytics Fathom Analytics is a simpler and more privacy-focused alternative to Google Analytics. Collecting information

Fathom Analytics 7k Sep 14, 2021
The fair and lightweight alternative to common web analytics tools.

Fair web analytics Let your users access their data. Gain valuable insights at the same time. Open, lightweight, self hosted and free. Contents Softwa

Offen 462 Sep 16, 2021
Privacy and Security focused Segment-alternative, in Golang and React

The smart customer data pipeline Table of Contents What is RudderStack? Why use RudderStack? Set up RudderStack Our customers Contribute to RudderStac

RudderStack 2.7k Sep 15, 2021
The simplest, fastest way to get business intelligence and analytics to everyone in your company :yum:

Metabase Metabase is the easy, open source way for everyone in your company to ask questions and learn from data. Features 5 minute setup (We're not k

Metabase 26.1k Sep 24, 2021
Modern, privacy-friendly, and detailed web analytics that works without cookies or JS.

Modern, privacy-friendly, and cookie-free web analytics. Getting started » Screenshots • Features • Design Motivation There are a lot of web analytics

R. Miles McCain 1.6k Sep 23, 2021
Make Your Company Data Driven. Connect to any data source, easily visualize, dashboard and share your data.

Redash is designed to enable anyone, regardless of the level of technical sophistication, to harness the power of data big and small. SQL users levera

Redash 19.5k Sep 17, 2021