<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<plugin id="indexer-elastic" name="ElasticIndexWriter" version="1.0.0"
  provider-name="nutch.apache.org">

  <runtime>
    <library name="indexer-elastic.jar">
      <export name="*" />
    </library>
    <library name="elasticsearch-2.3.3.jar"/>
    <library name="commons-cli-1.3.1.jar"/>
    <library name="compress-lzf-1.0.2.jar"/>
    <library name="guava-18.0.jar"/>
    <library name="HdrHistogram-2.1.6.jar"/>
    <library name="hppc-0.7.1.jar"/>
    <library name="jackson-core-2.6.6.jar"/>
    <library name="jackson-dataformat-cbor-2.6.6.jar"/>
    <library name="jackson-dataformat-smile-2.6.6.jar"/>
    <library name="jackson-dataformat-yaml-2.6.6.jar"/>
    <library name="joda-convert-1.2.jar"/>
    <library name="joda-time-2.8.2.jar"/>
    <library name="jsr166e-1.1.0.jar"/>
    <library name="lucene-analyzers-common-5.5.0.jar"/>
    <library name="lucene-backward-codecs-5.5.0.jar"/>
    <library name="lucene-core-5.5.0.jar"/>
    <library name="lucene-grouping-5.5.0.jar"/>
    <library name="lucene-highlighter-5.5.0.jar"/>
    <library name="lucene-join-5.5.0.jar"/>
    <library name="lucene-memory-5.5.0.jar"/>
    <library name="lucene-misc-5.5.0.jar"/>
    <library name="lucene-queries-5.5.0.jar"/>
    <library name="lucene-queryparser-5.5.0.jar"/>
    <library name="lucene-sandbox-5.5.0.jar"/>
    <library name="lucene-spatial-5.5.0.jar"/>
    <library name="lucene-spatial3d-5.5.0.jar"/>
    <library name="lucene-suggest-5.5.0.jar"/>
    <library name="netty-3.10.5.Final.jar"/>
    <library name="securesm-1.0.jar"/>
    <library name="snakeyaml-1.15.jar"/>
    <library name="spatial4j-0.5.jar"/>
    <library name="t-digest-3.0.jar"/>
  </runtime>

  <requires>
    <import plugin="nutch-extensionpoints" />
  </requires>

  <extension id="org.apache.nutch.indexer.elastic"
    name="Elasticsearch Index Writer"
    point="org.apache.nutch.indexer.IndexWriter">
    <implementation id="ElasticIndexWriter"
      class="org.apache.nutch.indexwriter.elastic.ElasticIndexWriter" />
  </extension>

</plugin>
