Skip to content

Commit 1a80d84

Browse files
author
Flavian
committed
Added support for fieldParent
1 parent 8c5c65e commit 1a80d84

File tree

5 files changed

+20
-0
lines changed

5 files changed

+20
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ The CSV river import data from CSV files and index it.
8989
"escape_character" : ";",
9090
"quote_character" : "'",
9191
"field_id" : "id",
92+
"field_parent" : "id_parent",
9293
"concurrent_requests" : "1",
9394
"charset" : "UTF-8",
9495
"script_before_all": "/path/to/before_all.sh",

src/main/groovy/org/agileworks/elasticsearch/river/csv/Configuration.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class Configuration {
3232
int bulkThreshold
3333
int concurrentRequests
3434
String idField
35+
String idParent
3536

3637
String scriptBeforeAll
3738
String scriptAfterAll
@@ -55,6 +56,7 @@ class Configuration {
5556
separator = nodeStringValue(csvSettings.get(Constants.CSV.FIELD_SEPARATOR), String.valueOf(',')).charAt(0)
5657
quoteCharacter = nodeStringValue(csvSettings.get(Constants.CSV.QUOTE_CHARACTER), String.valueOf('\"')).charAt(0)
5758
idField = nodeStringValue(csvSettings.get(Constants.CSV.FIELD_ID), 'id')
59+
parentField = nodeStringValue(csvSettings.get(Constants.CSV.FIELD_PARENT), '')
5860
concurrentRequests = nodeIntegerValue(csvSettings.get(Constants.CSV.CONCURRENT_REQUESTS), 1)
5961

6062
String charsetName = nodeStringValue(csvSettings.get(Constants.CSV.CHARSET), 'UTF-8')

src/main/groovy/org/agileworks/elasticsearch/river/csv/Constants.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class Constants {
2626
static final String FIELD_SEPARATOR = 'field_separator'
2727
static final String QUOTE_CHARACTER = 'quote_character'
2828
static final String FIELD_ID = 'field_id'
29+
statif final String FIELD_PARENT = 'field_parent'
2930

3031
static final String CHARSET = 'charset'
3132

src/main/groovy/org/agileworks/elasticsearch/river/csv/OpenCSVFileProcessor.groovy

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ class OpenCSVFileProcessor implements FileProcessor {
7777
request.id(UUID.randomUUID().toString())
7878
}
7979

80+
if (csvContainsParentColumn()) {
81+
request.parent(getParent(line))
82+
}
83+
8084
request.create(false).source(builder)
8185

8286
listener.onLineProcessed(request)
@@ -86,10 +90,21 @@ class OpenCSVFileProcessor implements FileProcessor {
8690
return config.csvFields.find { it == config.idField }
8791
}
8892

93+
boolean csvContainsParentColumn() {
94+
return config.csvFields.find { it == config.idParent }
95+
}
96+
8997
String getId(String[] line) {
9098

9199
int index = config.csvFields.indexOf(config.idField)
92100

93101
return line[index]
94102
}
103+
104+
String getParent(String[] line) {
105+
106+
int index = config.csvFields.indexOf(config.idParent)
107+
108+
return line[index]
109+
}
95110
}

src/test/groovy/org/agileworks/elasticsearch/river/csv/ConfigurationTest.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ class ConfigurationTest extends Specification {
7979
config.filenamePattern
8080
!config.folderName
8181
config.idField
82+
config.idParent
8283
config.indexName
8384
config.poll
8485
config.quoteCharacter

0 commit comments

Comments
 (0)