diff --git a/elman b/elman index 368aa86..8f22d81 100755 --- a/elman +++ b/elman @@ -49,12 +49,48 @@ def delete_index client.indices.delete index: INDEX_NAME rescue false end -# Creates the index -def create_index +def check_es_version + client.info['version']['number'].to_i +end + +def choose_mapping return if client.indices.exists? index: INDEX_NAME + puts "Detected Elasticsearch #{client.info['version']['number']}" puts "Creating index: #{INDEX_NAME}" + + if check_es_version <= 6 + create_index_old + else + create_index + end +end + +# Creates the index +def create_index client.indices.create index: INDEX_NAME, + body: { + mappings: { + properties: { + type: { type: :text}, + command: { + type: :text + }, + description: { + type: :text, + analyzer: :english + }, + manpage: { + type: :text, + analyzer: :english + } + } + } + } +end + +def create_index_old + client.indices.create index: INDEX_NAME, body: { mappings: { document: { @@ -86,7 +122,7 @@ def load_manpages manpage = `man #{command}` client.index index: INDEX_NAME, - type: :document, + type: client.info['version']['number'].to_i <= 6 ? :document : '_doc', body: { command: command, description: description, @@ -190,8 +226,8 @@ OptionParser.new do |opts| opts.on('-s', '--setup', 'Setup elman - (re)creates the index and loads all man pages') do delete_index - create_index - load_manpages + choose_mapping + load_manpages exit 0 end