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 advanced-configuration.asciidoc

    Update advanced-configuration.asciidoc

    Clarify the files to be modified are in the jvm.options.d/ folder

    external-contributor 
    opened by Leaf-Lin 0
  • Move shutdown component status out into separate classes

    Move shutdown component status out into separate classes

    Originally these were stored in the cluster state using a single class, however, they will need to be different objects without common parts, and they will be calculated on the fly rather than persisted into cluster state.

    This removes the NodeShutdownComponentStatus class, as its no longer needed.

    Relates to #70338

    :Core/Infra/Node Lifecycle >non-issue Team:Core/Infra v7.14.0 v8.0.0 
    opened by dakrone 1
  • Ban Path.of

    Ban Path.of

    We use PathUtils.get to look up paths with our custom testing infrastructure rather than Paths.get. In the past few years java has grown a Path.of which is very similar to Paths.get. Just like Paths.get, we should always be using PathUtils.get so that we get our fancy testing infrastructure. This uses forbiddenapis to ban Path.of and fixed the build errors.

    Closes #72392

    :Core/Infra/Core >non-issue Team:Core/Infra v7.14.0 v8.0.0 
    opened by nik9000 1
  • Script processor doc links to update API examples which is confusing

    Script processor doc links to update API examples which is confusing

    On this page (https://www.elastic.co/guide/en/elasticsearch/reference/master/script-processor.html), we link to the general scripting examples page that is used by the update API.

    See How to use scripts to learn more about writing scripts. The Script Processor leverages caching of compiled scripts for improved performance. Since the script specified within the processor is potentially re-compiled per document, it is important to understand how script caching works. To learn more about caching see Script Caching.

    This is misleading because the ingest processor context for painless is different from the update API. Users end up trying to get the update API examples working (for example, ctx._source does not work in the ingest node context).

    It will be helpful to have an example page linked from script processor that is for ingest node (does not include all the examples for other non-ingest use cases of painless), or provide ingest node script processor examples directly on the script processor page. Thx!

    :Core/Features/Ingest >docs Team:Core/Features Team:Docs 
    opened by ppf2 2
  • Make GetSnapshotsAction Cancellable

    Make GetSnapshotsAction Cancellable

    If this runs needlessly for large repositories (especially in timeout/retry situations) it's a significant memory+cpu hit => made it cancellable like we recently did for many other endpoints.

    :Distributed/Snapshot/Restore >enhancement Team:Distributed v7.14.0 v8.0.0 
    opened by original-brownbear 1
  • [DOCS] Add docs for rejected requests and high CPU usage

    [DOCS] Add docs for rejected requests and high CPU usage

    Adds docs for rejected requests and high CPU usage to Fix common cluster issues.

    Closes #72468.

    Closes #69868.

    Preview

    https://elasticsearch_72640.docs-preview.app.elstc.co/guide/en/elasticsearch/reference/master/fix-common-cluster-issues.html

    opened by jrodewig 0
  • [CI] CertificateGenerateToolTests testGeneratingSignedCertificates failing

    [CI] CertificateGenerateToolTests testGeneratingSignedCertificates failing

    It may be a combination of the OS + JVM version. I tried locally and it wasn't repeatable, but this failure looks similar to other security related failures due to unrecognized algorithms.

    java.security.KeyStoreException: Key protection  algorithm not found: java.security.UnrecoverableKeyException: Encrypt Private Key failed: unrecognized algorithm name: PBEWithSHA1AndDESede	
            at __randomizedtesting.SeedInfo.seed([D8985361EF945882:579E0DEF6B314DD1]:0)	
            at sun.security.pkcs12.PKCS12KeyStore.setKeyEntry(PKCS12KeyStore.java:694)	
            at sun.security.pkcs12.PKCS12KeyStore.engineSetKeyEntry(PKCS12KeyStore.java:594)	
            at java.security.KeyStore.setKeyEntry(KeyStore.java:1140)	
            at org.elasticsearch.xpack.security.cli.CertificateGenerateTool.lambda$generateAndWriteSignedCertificates$1(CertificateGenerateTool.java:438)	
            at org.elasticsearch.xpack.security.cli.CertificateGenerateTool.fullyWriteFile(CertificateGenerateTool.java:460)	
            at org.elasticsearch.xpack.security.cli.CertificateGenerateTool.generateAndWriteSignedCertificates(CertificateGenerateTool.java:406)	
            at org.elasticsearch.xpack.security.cli.CertificateGenerateToolTests.testGeneratingSignedCertificates(CertificateGenerateToolTests.java:284)	
            Caused by:	
            java.security.UnrecoverableKeyException: Encrypt Private Key failed: unrecognized algorithm name: PBEWithSHA1AndDESede	
                at sun.security.pkcs12.PKCS12KeyStore.encryptPrivateKey(PKCS12KeyStore.java:938)	
                at sun.security.pkcs12.PKCS12KeyStore.setKeyEntry(PKCS12KeyStore.java:631)	
                ... 6 more	
                Caused by:	
                java.security.NoSuchAlgorithmException: unrecognized algorithm name: PBEWithSHA1AndDESede	
                    at sun.security.x509.AlgorithmId.get(AlgorithmId.java:448)	
                    at sun.security.pkcs12.PKCS12KeyStore.mapPBEAlgorithmToOID(PKCS12KeyStore.java:955)	
                    at sun.security.pkcs12.PKCS12KeyStore.encryptPrivateKey(PKCS12KeyStore.java:912)	
                    ... 7 more
    

    Build scan: https://gradle-enterprise.elastic.co/s/spblrrxlqbg5o/tests/:x-pack:plugin:security:cli:test/org.elasticsearch.xpack.security.cli.CertificateGenerateToolTests/testGeneratingSignedCertificates

    Reproduction line: ./gradlew ':x-pack:plugin:security:cli:test' --tests "org.elasticsearch.xpack.security.cli.CertificateGenerateToolTests.testGeneratingSignedCertificates" -Dtests.seed=D8985361EF945882 -Dtests.security.manager=true -Dtests.locale=ko -Dtests.timezone=Australia/North -Druntime.java=8

    Applicable branches: 7.12

    Reproduces locally?: No

    Failure history: https://gradle-enterprise.elastic.co/scans/tests?tests.container=org.elasticsearch.xpack.security.cli.CertificateGenerateToolTests&tests.test=testGeneratingSignedCertificates

    Failure excerpt:

    java.security.KeyStoreException: Key protection  algorithm not found: java.security.UnrecoverableKeyException: Encrypt Private Key failed: unrecognized algorithm name: PBEWithSHA1AndDESede
    
      at __randomizedtesting.SeedInfo.seed([D8985361EF945882:579E0DEF6B314DD1]:0)
      at sun.security.pkcs12.PKCS12KeyStore.setKeyEntry(PKCS12KeyStore.java:694)
      at sun.security.pkcs12.PKCS12KeyStore.engineSetKeyEntry(PKCS12KeyStore.java:594)
      at java.security.KeyStore.setKeyEntry(KeyStore.java:1140)
      at org.elasticsearch.xpack.security.cli.CertificateGenerateTool.lambda$generateAndWriteSignedCertificates$1(CertificateGenerateTool.java:438)
      at org.elasticsearch.xpack.security.cli.CertificateGenerateTool.fullyWriteFile(CertificateGenerateTool.java:460)
      at org.elasticsearch.xpack.security.cli.CertificateGenerateTool.generateAndWriteSignedCertificates(CertificateGenerateTool.java:406)
      at org.elasticsearch.xpack.security.cli.CertificateGenerateToolTests.testGeneratingSignedCertificates(CertificateGenerateToolTests.java:284)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1750)
      at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:938)
      at com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:974)
      at com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:988)
      at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
      at org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:49)
      at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
      at org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48)
      at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
      at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
      at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
      at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
      at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:817)
      at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:468)
      at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:947)
      at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:832)
      at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:883)
      at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:894)
      at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
      at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
      at org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41)
      at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
      at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
      at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
      at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
      at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
      at org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
      at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
      at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
      at org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
      at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
      at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
      at java.lang.Thread.run(Thread.java:748)
    
      Caused by: java.security.UnrecoverableKeyException: Encrypt Private Key failed: unrecognized algorithm name: PBEWithSHA1AndDESede
    
        at sun.security.pkcs12.PKCS12KeyStore.encryptPrivateKey(PKCS12KeyStore.java:938)
        at sun.security.pkcs12.PKCS12KeyStore.setKeyEntry(PKCS12KeyStore.java:631)
        at sun.security.pkcs12.PKCS12KeyStore.engineSetKeyEntry(PKCS12KeyStore.java:594)
        at java.security.KeyStore.setKeyEntry(KeyStore.java:1140)
        at org.elasticsearch.xpack.security.cli.CertificateGenerateTool.lambda$generateAndWriteSignedCertificates$1(CertificateGenerateTool.java:438)
        at org.elasticsearch.xpack.security.cli.CertificateGenerateTool.fullyWriteFile(CertificateGenerateTool.java:460)
        at org.elasticsearch.xpack.security.cli.CertificateGenerateTool.generateAndWriteSignedCertificates(CertificateGenerateTool.java:406)
        at org.elasticsearch.xpack.security.cli.CertificateGenerateToolTests.testGeneratingSignedCertificates(CertificateGenerateToolTests.java:284)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1750)
        at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:938)
        at com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:974)
        at com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:988)
        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
        at org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:49)
        at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
        at org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48)
        at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
        at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
        at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
        at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:817)
        at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:468)
        at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:947)
        at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:832)
        at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:883)
        at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:894)
        at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
        at org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41)
        at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
        at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
        at org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
        at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
        at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
        at org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
        at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
        at java.lang.Thread.run(Thread.java:748)
    
        Caused by: java.security.NoSuchAlgorithmException: unrecognized algorithm name: PBEWithSHA1AndDESede
    
          at sun.security.x509.AlgorithmId.get(AlgorithmId.java:448)
          at sun.security.pkcs12.PKCS12KeyStore.mapPBEAlgorithmToOID(PKCS12KeyStore.java:955)
          at sun.security.pkcs12.PKCS12KeyStore.encryptPrivateKey(PKCS12KeyStore.java:912)
          at sun.security.pkcs12.PKCS12KeyStore.setKeyEntry(PKCS12KeyStore.java:631)
          at sun.security.pkcs12.PKCS12KeyStore.engineSetKeyEntry(PKCS12KeyStore.java:594)
          at java.security.KeyStore.setKeyEntry(KeyStore.java:1140)
          at org.elasticsearch.xpack.security.cli.CertificateGenerateTool.lambda$generateAndWriteSignedCertificates$1(CertificateGenerateTool.java:438)
          at org.elasticsearch.xpack.security.cli.CertificateGenerateTool.fullyWriteFile(CertificateGenerateTool.java:460)
          at org.elasticsearch.xpack.security.cli.CertificateGenerateTool.generateAndWriteSignedCertificates(CertificateGenerateTool.java:406)
          at org.elasticsearch.xpack.security.cli.CertificateGenerateToolTests.testGeneratingSignedCertificates(CertificateGenerateToolTests.java:284)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:498)
          at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1750)
          at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:938)
          at com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:974)
          at com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:988)
          at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
          at org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:49)
          at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
          at org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48)
          at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
          at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
          at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
          at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
          at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:817)
          at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:468)
          at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:947)
          at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:832)
          at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:883)
          at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:894)
          at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
          at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
          at org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41)
          at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
          at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
          at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
          at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
          at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
          at org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
          at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
          at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
          at org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
          at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
          at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
          at java.lang.Thread.run(Thread.java:748)
    
    
    :Security/Security >test-failure Team:Security 
    opened by benwtrent 1
  • [ML] Use appropriate master timeouts for master actions

    [ML] Use appropriate master timeouts for master actions

    Master node actions have a master timeout. One thing this does is define how long the transport layer waits for a master node to be elected if no master node exists at the time the master node request is made.

    When a persistent task invokes a master node action it makes sense for the master node timeout to be high. We do not want persistent tasks to fail because of a master timeout while a cluster is upgraded. For a request sent by an end user a master timeout of the order of 30 seconds makes sense, and the user can make a decision of whether to try again, but for a persistent task if the task fails due to a master timeout then it will never try again until somebody restarts the task. Since the user will not be expecting persistent tasks to fail during upgrade the tasks may not get restarted for a very long time, which is unacceptable.

    Therefore, this change increases the master timeout for master actions invoked by persistent tasks to 1 year. This means that the tasks will tolerate much longer than normal periods without a master node during upgrades, which should stop them spuriously failing.

    Backport of #72492

    backport v7.14.0 
    opened by droberts195 0
  • [CI] CCSDuelIT testPhraseSuggester failing

    [CI] CCSDuelIT testPhraseSuggester failing

    reproduce:

    ./gradlew ':qa:multi-cluster-search:remote-cluster' --tests "org.elasticsearch.search.CCSDuelIT.testPhraseSuggester" -Dtests.seed=62A49A09E427CD08 -Dtests.locale=ro -Dtests.timezone=Africa/Harare -Druntime.java=11
    

    Trace:

      2> java.lang.AssertionError: expected:<1> but was:<2>	
            at __randomizedtesting.SeedInfo.seed([62A49A09E427CD08:4AAF98B9FEA80F1D]:0)	
            at org.junit.Assert.fail(Assert.java:88)	
            at org.junit.Assert.failNotEquals(Assert.java:834)	
            at org.junit.Assert.assertEquals(Assert.java:645)	
            at org.junit.Assert.assertEquals(Assert.java:631)	
            at org.elasticsearch.search.CCSDuelIT.indexDocuments(CCSDuelIT.java:210)	
            at org.elasticsearch.search.CCSDuelIT.lambda$init$0(CCSDuelIT.java:130)	
            at com.carrotsearch.randomizedtesting.RandomizedContext.runWithPrivateRandomness(RandomizedContext.java:187)	
            at com.carrotsearch.randomizedtesting.RandomizedContext.runWithPrivateRandomness(RandomizedContext.java:211)	
            at org.elasticsearch.search.CCSDuelIT.init(CCSDuelIT.java:128)
    

    Build scan: https://gradle-enterprise.elastic.co/s/epn33t255syje/tests/:qa:multi-cluster-search:remote-cluster/org.elasticsearch.search.CCSDuelIT/testPhraseSuggester

    Reproduction line: ./gradlew ':qa:multi-cluster-search:remote-cluster' --tests "org.elasticsearch.search.CCSDuelIT.testPhraseSuggester" -Dtests.seed=62A49A09E427CD08 -Dtests.locale=ro -Dtests.timezone=Africa/Harare -Druntime.java=11

    Applicable branches: 7.13

    Reproduces locally?: No

    Failure history: https://gradle-enterprise.elastic.co/scans/tests?tests.container=org.elasticsearch.search.CCSDuelIT&tests.test=testPhraseSuggester

    Failure excerpt:

    java.lang.AssertionError: expected:<1> but was:<2>
    
      at __randomizedtesting.SeedInfo.seed([62A49A09E427CD08:4AAF98B9FEA80F1D]:0)
      at org.junit.Assert.fail(Assert.java:88)
      at org.junit.Assert.failNotEquals(Assert.java:834)
      at org.junit.Assert.assertEquals(Assert.java:645)
      at org.junit.Assert.assertEquals(Assert.java:631)
      at org.elasticsearch.search.CCSDuelIT.indexDocuments(CCSDuelIT.java:210)
      at org.elasticsearch.search.CCSDuelIT.lambda$init$0(CCSDuelIT.java:130)
      at com.carrotsearch.randomizedtesting.RandomizedContext.runWithPrivateRandomness(RandomizedContext.java:187)
      at com.carrotsearch.randomizedtesting.RandomizedContext.runWithPrivateRandomness(RandomizedContext.java:211)
      at org.elasticsearch.search.CCSDuelIT.init(CCSDuelIT.java:128)
      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:566)
      at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1750)
      at com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:972)
      at com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:988)
      at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
      at org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:49)
      at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
      at org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48)
      at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
      at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
      at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
      at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
      at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:817)
      at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:468)
      at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:947)
      at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:832)
      at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:883)
      at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:894)
      at org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
      at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
      at org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41)
      at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
      at com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
      at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
      at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
      at org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
      at org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
      at org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
      at org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
      at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
      at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
      at java.lang.Thread.run(Thread.java:829)
    
    
    :Search/Search >test-failure Team:Search 
    opened by benwtrent 1
  • Update data tiers migration docs to refer to UIs where possible

    Update data tiers migration docs to refer to UIs where possible

    In https://www.elastic.co/guide/en/elasticsearch/reference/current/migrate-index-allocation-filters.html there are two places where we can direct the user to use our UIs:

    • In the "Remove custom allocation settings from existing ILM policies" step, we can direct users to use the ILM UI to do this action. We can show the user a screenshot and cross-link to the relevant docs.
    • In the "Stop setting the custom hot attribute on new indices", we share an API request for deleting an index template, but you can also use the Index Templates UI to do this. We can show the user a screenshot. The index templates docs don't yet refer to the UI, so we might want to hold off on cross-linking to them.
    >docs Team:Docs 
    opened by cjcenizal 2
Releases(v7.12.1)
  • 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)
  • v7.8.0(Jun 18, 2020)

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

    Source code(tar.gz)
    Source code(zip)
  • v7.7.1(Jun 3, 2020)

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

    Source code(tar.gz)
    Source code(zip)
  • v6.8.10(Jun 3, 2020)

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

    Source code(tar.gz)
    Source code(zip)
  • v6.8.9(May 13, 2020)

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

    Source code(tar.gz)
    Source code(zip)
  • v7.7.0(May 13, 2020)

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

    Source code(tar.gz)
    Source code(zip)
  • v7.6.2(Mar 31, 2020)

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

    Source code(tar.gz)
    Source code(zip)
  • v6.8.8(Mar 31, 2020)

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

    Source code(tar.gz)
    Source code(zip)
  • v7.6.1(Mar 4, 2020)

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

    Source code(tar.gz)
    Source code(zip)
  • v6.8.7(Mar 4, 2020)

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

    Source code(tar.gz)
    Source code(zip)
  • v7.6.0(Feb 11, 2020)

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

    Source code(tar.gz)
    Source code(zip)
  • v7.5.2(Jan 21, 2020)

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

    Source code(tar.gz)
    Source code(zip)
  • v7.5.1(Dec 18, 2019)

    Downloads: https://elastic.co/downloads/elasticsearch Release notes: https://www.elastic.co/guide/en/elasticsearch/reference/7.5/release-notes-7.5.1.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 1.5k Apr 15, 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 Mar 12, 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 74 Mar 27, 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.

开源中国 124 Mar 27, 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 46 Mar 27, 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 42 Nov 20, 2020
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.1k Mar 11, 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 13 Mar 16, 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 17 Mar 29, 2021
ElasticSearch SQL查询适配器,为Elasticsearch提供SQL查询的功能。支持跨集群查询,可拓展异构数据源。将calcite基于配置文件的配置方式改为通过代码灵活控制,可动态增加数据源,并支持完整的SQL查询功能。

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

弘树丶 17 Mar 20, 2021