[
https://issues.apache.org/jira/browse/JENA-1305?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15926003#comment-15926003
]
ASF GitHub Bot commented on JENA-1305:
--------------------------------------
Github user osma commented on a diff in the pull request:
https://github.com/apache/jena/pull/227#discussion_r106143179
--- Diff:
jena-text/src/main/java/org/apache/jena/query/text/assembler/TextIndexESAssembler.java
---
@@ -0,0 +1,129 @@
+/**
+ * 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.
+ */
+
+package org.apache.jena.query.text.assembler;
+
+import org.apache.jena.assembler.Assembler;
+import org.apache.jena.assembler.Mode;
+import org.apache.jena.assembler.assemblers.AssemblerBase;
+import org.apache.jena.query.text.*;
+import org.apache.jena.rdf.model.RDFNode;
+import org.apache.jena.rdf.model.Resource;
+import org.apache.jena.rdf.model.Statement;
+import org.apache.jena.sparql.util.graph.GraphUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.apache.jena.query.text.assembler.TextVocab.*;
+
+public class TextIndexESAssembler extends AssemblerBase {
+
+ private static Logger LOGGER =
LoggerFactory.getLogger(TextIndexESAssembler.class) ;
+
+ protected static final String COMMA = ",";
+ protected static final String COLON = ":";
+ /*
+ <#index> a :TextIndexES ;
+ text:serverList "127.0.0.1:9300,127.0.0.2:9400,127.0.0.3:9500" ;
#Comma separated list of hosts:ports
+ text:clusterName "elasticsearch"
+ text:shards "1"
+ text:replicas "1"
+ text:entityMap <#endMap> ;
+ .
+ */
+
+ @SuppressWarnings("resource")
+ @Override
+ public TextIndex open(Assembler a, Resource root, Mode mode) {
+ try {
+ String listOfHostsAndPorts = GraphUtils.getAsStringValue(root,
pServerList) ;
+ if(listOfHostsAndPorts == null ||
listOfHostsAndPorts.isEmpty()) {
+ throw new TextIndexException("Mandatory property
text:serverList (containing the comma-separated list of host:port) property is
not specified. " +
+ "An example value for the property:
127.0.0.1:9300");
+ }
+ String[] hosts = listOfHostsAndPorts.split(COMMA);
+ Map<String,Integer> hostAndPortMapping = new HashMap<>();
+ for(String host : hosts) {
+ String[] hostAndPort = host.split(COLON);
+ if(hostAndPort.length < 2) {
+ LOGGER.error("Either the host or the port value is
missing.Please specify the property in host:port format. " +
+ "Both parts are mandatory. Ignoring this
value. Moving to the next one.");
+ continue;
+ }
+ hostAndPortMapping.put(hostAndPort[0],
Integer.valueOf(hostAndPort[1]));
+ }
+
+ String clusterName = GraphUtils.getAsStringValue(root,
pClusterName);
+ if(clusterName == null || clusterName.isEmpty()) {
+ LOGGER.warn("ClusterName property is not specified.
Defaulting to 'elasticsearch'");
+ clusterName = "elasticsearch";
+ }
+
+ String numberOfShards = GraphUtils.getAsStringValue(root,
pShards);
+ if(numberOfShards == null || numberOfShards.isEmpty()) {
+ LOGGER.warn("shards property is not specified. Defaulting
to '1'");
+ numberOfShards = "1";
+ }
+
+ String replicationFactor = GraphUtils.getAsStringValue(root,
pReplicas);
+ if(replicationFactor == null || replicationFactor.isEmpty()) {
+ LOGGER.warn("replicas property is not specified.
Defaulting to '1'");
+ replicationFactor = "1";
+ }
+
+ String indexName = GraphUtils.getAsStringValue(root,
pIndexName);
+ if(indexName == null || indexName.isEmpty()) {
+ LOGGER.warn("index Name property is not specified.
Defaulting to 'test'");
--- End diff --
The logged message is wrong, index name defaults to "jena-text"
> Elastic Search Support for Apache Jena Text
> --------------------------------------------
>
> Key: JENA-1305
> URL: https://issues.apache.org/jira/browse/JENA-1305
> Project: Apache Jena
> Issue Type: New Feature
> Components: Text
> Affects Versions: Jena 3.2.0
> Reporter: Anuj Kumar
> Assignee: Osma Suominen
> Labels: elasticsearch
> Original Estimate: 240h
> Remaining Estimate: 240h
>
> This Jira tracks the development of Jena Text ElasticSearch Implementation.
> The goal is to extend Jena Text capability to index, at scale, in
> ElasticSearch. This implementation would be similar to the Lucene and Solr
> implementations.
> We will use ES version 5.2.1 for the implementation.
> The following functionalities would be supported:
> * Indexing Literal values
> * Updating indexed values
> * Deleting Indexed values
> * Custom Analyzer Support
> * Configuration using Assembler as well as Java techniques.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)