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.

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
  • Update json parser and snippets

    Update json parser and snippets

    Related to issue #77823

    This does the following:

    • Updates several asciidoc files that contained code snippets with invalid Json, most involving unnecessary trailing commas.

    • Makes the switch from the groovy Json parser to the Jackson parser, pursuant to the general goal of eliminating groovy dependence.

    • Makes testing of Json validity at build time more strict.

    Note that this update still allows backslash escaping for any character. Currently that matters because of the file "docs/reference/ml/anomaly-detection/apis/get-datafeed-stats.asciidoc", specifically this part:

    "attributes" : {
                "ml.machine_memory" : "$body.datafeeds.0.node.attributes.ml\.machine_memory",
                "ml.max_open_jobs" : "512"
              }
    

    It's not clear to me what change, if any, is appropriate there. So, I've left in the escaped period and configured the parser to ignore it for the time being.

    v8.0.0 external-contributor 
    opened by edh-oss 0
  • 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 3
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)
OpenSearch is an open source distributed and RESTful search engine.

OpenSearch is an open source search and analytics engine derived from Elasticsearch

null 3.8k Sep 14, 2021
Apache Lucene.NET

Apache Lucene.NET Full-text search for .NET Apache Lucene.NET is a .NET full-text search engine framework, a C# port of the popular Apache Lucene proj

The Apache Software Foundation 1.6k Sep 13, 2021
Apache Lucene is a high-performance, full featured text search engine library written in Java.

Apache Lucene is a high-performance, full featured text search engine library written in Java.

The Apache Software Foundation 457 Sep 13, 2021
🔍An open source GitLab/Gitee/Gitea code search tool. Kooder 是一个为 Gitee/GitLab 开发的开源代码搜索工具,这是一个镜像仓库,主仓库在 Gitee。

Kooder is a open source code search project, offering code, repositories and issues search service for code hosting platforms including Gitee, GitLab and Gitea.

开源中国 241 Sep 15, 2021
Apache Solr is an enterprise search platform written in Java and using Apache Lucene.

Apache Solr is an enterprise search platform written in Java and using Apache Lucene. Major features include full-text search, index replication and sharding, and result faceting and highlighting.

The Apache Software Foundation 181 Sep 16, 2021
Simple full text indexing and searching library for Java

indexer4j Simple full text indexing and searching library for Java Install Gradle repositories { jcenter() } dependencies { compile 'com.haeun

Haeun Kim 43 Jun 9, 2021
Apache Lucene and Solr open-source search software

Apache Lucene and Solr have separate repositories now! Solr has become a top-level Apache project and main line development for Lucene and Solr is hap

The Apache Software Foundation 4.2k Sep 15, 2021
GitHub Search Engine: Web Application used to retrieve, store and present projects from GitHub, as well as any statistics related to them.

GHSearch Platform This project is made of two subprojects: application: The main application has two main responsibilities: Crawling GitHub and retrie

SEART - SoftwarE Analytics Research Team 32 Aug 19, 2021
A proof-of-concept serverless full-text search solution built with Apache Lucene and Quarkus framework.

Lucene Serverless This project demonstrates a proof-of-concept serverless full-text search solution built with Apache Lucene and Quarkus framework. ✔️

Arseny Yankovsky 24 Aug 29, 2021
ElasticSearch SQL查询适配器,为Elasticsearch提供SQL查询的功能。支持跨集群查询,可拓展异构数据源。将calcite基于配置文件的配置方式改为通过代码灵活控制,可动态增加数据源,并支持完整的SQL查询功能。

?? 使用指南 ElasticSearchSQL查询适配器,为Elasticsearch提供SQL查询的功能。支持完整的SQL查询和跨Elasticsearch集群查询。通过代码简单配置,使项目根据Elasticsearch的index映射为Table。 License CodeBeat Langu

弘树丶 21 Sep 2, 2021