mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-05 20:48:22 +00:00
e3b7e5d75a
Also replaced the PercolatorQueryRegistry with the new PercolatorQueryCache. The PercolatorFieldMapper stores the rewritten form of each percolator query's xcontext in a binary doc values field. This make sure that the query rewrite happens only during indexing (some queries for example fetch shapes, terms in remote indices) and the speed up the loading of the queries in the percolator query cache. Because the percolator now works inside the search infrastructure a number of features (sorting fields, pagination, fetch features) are available out of the box. The following feature requests are automatically implemented via this refactoring: Closes #10741 Closes #7297 Closes #13176 Closes #13978 Closes #11264 Closes #10741 Closes #4317
150 lines
5.1 KiB
Plaintext
150 lines
5.1 KiB
Plaintext
[[java-api]]
|
|
= Java API
|
|
:ref: http://www.elastic.co/guide/en/elasticsearch/reference/master
|
|
|
|
[preface]
|
|
== Preface
|
|
This section describes the Java API that elasticsearch provides. All
|
|
elasticsearch operations are executed using a
|
|
<<client,Client>> object. All
|
|
operations are completely asynchronous in nature (either accepts a
|
|
listener, or returns a future).
|
|
|
|
Additionally, operations on a client may be accumulated and executed in
|
|
<<java-docs-bulk,Bulk>>.
|
|
|
|
Note, all the APIs are exposed through the
|
|
Java API (actually, the Java API is used internally to execute them).
|
|
|
|
|
|
== Maven Repository
|
|
|
|
Elasticsearch is hosted on
|
|
http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22elasticsearch%22[Maven
|
|
Central].
|
|
|
|
For example, you can define the latest version in your `pom.xml` file:
|
|
|
|
[source,xml]
|
|
--------------------------------------------------
|
|
<dependency>
|
|
<groupId>org.elasticsearch</groupId>
|
|
<artifactId>elasticsearch</artifactId>
|
|
<version>${es.version}</version>
|
|
</dependency>
|
|
--------------------------------------------------
|
|
|
|
== Dealing with JAR dependency conflicts
|
|
|
|
If you want to use Elasticsearch in your Java application, you may have to deal with version conflicts with third party
|
|
dependencies like Guava and Joda. For instance, perhaps Elasticsearch uses Joda 2.8, while your code uses Joda 2.1.
|
|
|
|
You have two choices:
|
|
|
|
* The simplest solution is to upgrade. Newer module versions are likely to have fixed old bugs.
|
|
The further behind you fall, the harder it will be to upgrade later. Of course, it is possible that you are using a
|
|
third party dependency that in turn depends on an outdated version of a package, which prevents you from upgrading.
|
|
|
|
* The second option is to relocate the troublesome dependencies and to shade them either with your own application
|
|
or with Elasticsearch and any plugins needed by the Elasticsearch client.
|
|
|
|
The https://www.elastic.co/blog/to-shade-or-not-to-shade["To shade or not to shade" blog post] describes
|
|
all the steps for doing so.
|
|
|
|
== Embedding jar with dependencies
|
|
|
|
If you want to create a single jar containing your application and all dependencies, you should not
|
|
use `maven-assembly-plugin` for that because it can not deal with `META-INF/services` structure which is
|
|
required by Lucene jars.
|
|
|
|
Instead, you can use `maven-shade-plugin` and configure it as follow:
|
|
|
|
[source,xml]
|
|
--------------------------------------------------
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-shade-plugin</artifactId>
|
|
<version>2.4.1</version>
|
|
<executions>
|
|
<execution>
|
|
<phase>package</phase>
|
|
<goals><goal>shade</goal></goals>
|
|
<configuration>
|
|
<transformers>
|
|
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
|
|
</transformers>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
--------------------------------------------------
|
|
|
|
Note that if you have a `main` class you want to automatically call when running `java -jar yourjar.jar`, just add
|
|
it to the `transformers`:
|
|
|
|
[source,xml]
|
|
--------------------------------------------------
|
|
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
|
|
<mainClass>org.elasticsearch.demo.Generate</mainClass>
|
|
</transformer>
|
|
--------------------------------------------------
|
|
|
|
|
|
== Deploying in JBoss EAP6 module
|
|
|
|
Elasticsearch and Lucene classes need to be in the same JBoss module.
|
|
|
|
You should define a `module.xml` file like this:
|
|
|
|
[source,xml]
|
|
--------------------------------------------------
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<module xmlns="urn:jboss:module:1.1" name="org.elasticsearch">
|
|
<resources>
|
|
<!-- Elasticsearch -->
|
|
<resource-root path="elasticsearch-2.0.0.jar"/>
|
|
<!-- Lucene -->
|
|
<resource-root path="lucene-core-5.1.0.jar"/>
|
|
<resource-root path="lucene-analyzers-common-5.1.0.jar"/>
|
|
<resource-root path="lucene-queries-5.1.0.jar"/>
|
|
<resource-root path="lucene-memory-5.1.0.jar"/>
|
|
<resource-root path="lucene-highlighter-5.1.0.jar"/>
|
|
<resource-root path="lucene-queryparser-5.1.0.jar"/>
|
|
<resource-root path="lucene-sandbox-5.1.0.jar"/>
|
|
<resource-root path="lucene-suggest-5.1.0.jar"/>
|
|
<resource-root path="lucene-misc-5.1.0.jar"/>
|
|
<resource-root path="lucene-join-5.1.0.jar"/>
|
|
<resource-root path="lucene-grouping-5.1.0.jar"/>
|
|
<resource-root path="lucene-spatial-5.1.0.jar"/>
|
|
<resource-root path="lucene-expressions-5.1.0.jar"/>
|
|
<!-- Insert other resources here -->
|
|
</resources>
|
|
|
|
<dependencies>
|
|
<module name="sun.jdk" export="true" >
|
|
<imports>
|
|
<include path="sun/misc/Unsafe" />
|
|
</imports>
|
|
</module>
|
|
<module name="org.apache.log4j"/>
|
|
<module name="org.apache.commons.logging"/>
|
|
<module name="javax.api"/>
|
|
</dependencies>
|
|
</module>
|
|
--------------------------------------------------
|
|
|
|
|
|
include::client.asciidoc[]
|
|
|
|
include::docs.asciidoc[]
|
|
|
|
include::search.asciidoc[]
|
|
|
|
include::aggs.asciidoc[]
|
|
|
|
include::query-dsl.asciidoc[]
|
|
|
|
include::indexed-scripts.asciidoc[]
|
|
|
|
include::admin/index.asciidoc[]
|