Module: Esse

Extended by:
Forwardable
Includes:
Logging
Defined in:
lib/esse/index/mappings.rb,
lib/esse.rb,
lib/esse/cli.rb,
lib/esse/core.rb,
lib/esse/index.rb,
lib/esse/config.rb,
lib/esse/errors.rb,
lib/esse/events.rb,
lib/esse/cluster.rb,
lib/esse/logging.rb,
lib/esse/plugins.rb,
lib/esse/version.rb,
lib/esse/cli/base.rb,
lib/esse/document.rb,
lib/esse/cli/index.rb,
lib/esse/transport.rb,
lib/esse/collection.rb,
lib/esse/events/bus.rb,
lib/esse/index/base.rb,
lib/esse/index/type.rb,
lib/esse/repository.rb,
lib/esse/import/bulk.rb,
lib/esse/cli/generate.rb,
lib/esse/events/event.rb,
lib/esse/index/search.rb,
lib/esse/search/query.rb,
lib/esse/hash_document.rb,
lib/esse/index/actions.rb,
lib/esse/index/aliases.rb,
lib/esse/index/indices.rb,
lib/esse/index/plugins.rb,
lib/esse/index_mapping.rb,
lib/esse/index_setting.rb,
lib/esse/null_document.rb,
lib/esse/cli/index/open.rb,
lib/esse/cluster_engine.rb,
lib/esse/index/settings.rb,
lib/esse/cli/index/close.rb,
lib/esse/cli/index/reset.rb,
lib/esse/index/documents.rb,
lib/esse/search/response.rb,
lib/esse/template_loader.rb,
lib/esse/cli/index/create.rb,
lib/esse/cli/index/delete.rb,
lib/esse/cli/index/import.rb,
lib/esse/dynamic_template.rb,
lib/esse/events/publisher.rb,
lib/esse/index/attributes.rb,
lib/esse/search/query/dsl.rb,
lib/esse/transport/health.rb,
lib/esse/transport/search.rb,
lib/esse/index/descendants.rb,
lib/esse/index/inheritance.rb,
lib/esse/primitives/output.rb,
lib/esse/transport/aliases.rb,
lib/esse/transport/indices.rb,
lib/esse/cli/event_listener.rb,
lib/esse/deprecations/index.rb,
lib/esse/primitives/hstring.rb,
lib/esse/repository/actions.rb,
lib/esse/import/request_body.rb,
lib/esse/transport/documents.rb,
lib/esse/deprecations/cluster.rb,
lib/esse/lazy_document_header.rb,
lib/esse/repository/documents.rb,
lib/esse/cli/extensions_loader.rb,
lib/esse/primitives/hash_utils.rb,
lib/esse/deprecations/deprecate.rb,
lib/esse/primitives/array_utils.rb,
lib/esse/deprecations/repository.rb,
lib/esse/deprecations/serializer.rb,
lib/esse/document_lazy_attribute.rb,
lib/esse/cli/index/base_operation.rb,
lib/esse/cli/index/update_aliases.rb,
lib/esse/cli/index/update_mapping.rb,
lib/esse/cli/index/update_settings.rb,
lib/esse/document_for_partial_update.rb,
lib/esse/index/object_document_mapper.rb,
lib/esse/repository/object_document_mapper.rb,
lib/esse/repository/lazy_document_attributes.rb,
lib/esse/deprecations/index_backend_delegator.rb,
lib/esse/deprecations/repository_backend_delegator.rb

Overview

The es 7.6 deprecate the mapping definition under the type level. That’s why we have option to define mappings under both Type and Index. If the index mapping is defined. All the Type mapping will be ignored. Source: www.elastic.co/guide/en/elasticsearch/reference/7.6/removal-of-types.html

Defined Under Namespace

Modules: ArrayUtils, CLI, Deprecations, Events, HashUtils, Import, Logging, Output, Plugins, Search Classes: Cluster, ClusterEngine, Collection, Config, Document, DocumentForPartialUpdate, DocumentLazyAttribute, DynamicTemplate, Error, HashDocument, Hstring, Index, IndexMapping, IndexSetting, LazyDocumentHeader, NullDocument, Repository, Serializer, TemplateLoader, Transport

Constant Summary collapse

SETTING_ROOT_KEY =
:settings
MAPPING_ROOT_KEY =
:mappings
DEFAULT_REPO_NAME =
'default'
CLI_IGNORE_OPTS =
%i[
  require
  silent
].freeze
CLI_CONFIG_PATHS =
%w[
  Essefile
  config/esse.rb
  config/initializers/esse.rb
].freeze
VERSION =
'0.4.0.rc2'

Class Method Summary collapse

Methods included from Logging

included

Class Method Details

.config {|@config| ... } ⇒ Object Also known as: configure

Yields:



30
31
32
33
34
# File 'lib/esse/config.rb', line 30

def config
  @config ||= Config.new
  yield(@config) if block_given?
  @config
end

.doc_id!(hash, delete: %w[_id],, keep: %w[id])) ⇒ Array([Integer, String, nil], Hash)

Simple helper used to fetch Hash value using Symbol and String keys.

Parameters:

  • hash (Hash)

    the JSON document

  • delete (Array) (defaults to: %w[_id],)

    Removes the hash key and return its value

  • keep (Array) (defaults to: %w[id]))

    Fetch the hash key and return its value

Returns:

  • (Array([Integer, String, nil], Hash))

    return the key value and the modified hash



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/esse/core.rb', line 55

def self.doc_id!(hash, delete: %w[_id], keep: %w[id])
  return unless hash.is_a?(Hash)

  id = nil
  modified = nil
  Array(delete).each do |key|
    k = key.to_s if hash.key?(key.to_s)
    k ||= key.to_sym if hash.key?(key.to_sym)
    next unless k

    modified ||= hash.dup
    id = modified.delete(k)
    break if id
  end
  return [id, modified] if id

  modified ||= hash
  Array(keep).each do |key|
    id = modified[key.to_s] || modified[key.to_sym]
    break if id
  end
  [id, modified]
end

.document?(object) ⇒ Boolean

Returns:

  • (Boolean)


90
91
92
93
94
# File 'lib/esse/core.rb', line 90

def self.document?(object)
  return false unless object

  !!(object.is_a?(Esse::Document) && object.id)
end

.document_match_with_header?(document, id, routing, type) ⇒ Boolean

Returns:

  • (Boolean)


96
97
98
99
100
# File 'lib/esse/core.rb', line 96

def self.document_match_with_header?(document, id, routing, type)
  id && id.to_s == document.id.to_s &&
    routing == document.routing &&
    (LazyDocumentHeader::ACCEPTABLE_DOC_TYPES.include?(document.type) && LazyDocumentHeader::ACCEPTABLE_DOC_TYPES.include?(type) || document.type == type)
end

.eager_load_indices!Object



79
80
81
82
83
84
85
86
87
88
# File 'lib/esse/core.rb', line 79

def self.eager_load_indices!
  return false unless Esse.config.indices_directory.exist?

  Dir[Esse.config.indices_directory.join('**/*_index.rb')].map { |path| Pathname.new(path) }.each do |path|
    next unless path.extname == '.rb'

    require(path.expand_path.to_s)
  end
  true
end

.synchronize(&block) ⇒ Object

Unless in single threaded mode, protects access to any mutable global data structure in Esse. Uses a non-reentrant mutex, so calling code should be careful. In general, this should only be used around the minimal possible code such as Hash#[], Hash#[]=, Hash#delete, Array#<<, and Array#delete.



38
39
40
# File 'lib/esse/core.rb', line 38

def self.synchronize(&block)
  @single_threaded ? yield : @data_mutex.synchronize(&block)
end

.timestampObject

Generates an unique timestamp to be used as a index suffix. Time.now.to_i could also do the job. But I think this format is more readable for humans



45
46
47
# File 'lib/esse/core.rb', line 45

def self.timestamp
  Time.now.strftime('%Y%m%d%H%M%S')
end