SlideShare a Scribd company logo
E L A S T I C S E A R C H
M A K E
Y O U R
S O F T W A R E
S M A R T E R !
O L E K S I Y P A N C H E N K O / # P I V O R A K / 2 0 1 5
MY NAME IS…
Oleksiy Panchenko
Software engineer, Lohika
E-mail: oleksij@gmail.com
Twitter: oleskiyp
LinkedIn:
https://ua.linkedin.com/in/opanchenko
AGENDA
• Introduction. What is it all about?
• Jump start Elastic. Demo time
• Architecture and deployment. Why is
Elasticsearch elastic?
• Case studies. 4 real-life projects
• Query API in depth + Demo
• Using Elastic in Rails applications. Approaches
and tools
• Kinda summary
• Q & A
[ ELASTIC MORNING @ LOHIKA ]
INTRODUCTION
W H A T I S I T A L L A B O U T ?
HOW TO MAKE YOUR SITE
SEARCHABLE?
http://www.imbusstop.com/wp-content/uploads/2015/02/websites.png
• Google search
• Why not to use plain vanilla SQL? RDBMS rocks!
select *
from books
join authors
on …
where …
• Sphinx (hello Craigslist, Habrahabr, The Pirate Bay, 1C);
Xapian
• Lucene Family: Apache Lucene, Elasticsearch, Apache
Apache Solr, Amazon Cloudsearch, …
WHO HAS EVER USED
ELASTICSEARCH/SOLR/SPHINX?
http://dolhomeschoolcenter.com/wp-content/uploads/2013/02/FAQ.png
LUCENE AS A CORE
• Lucene = Low-level Java library (JAR) which
implements search functionality
• Lucene stores its index as a local binary file
• Can be used in both web and standalone
applications (desktop, mobile)
• Implemented in Java, ports to other languages
available
• Initial version: 1999
• Apache project since 2001
• Latest stable release: 5.3.1 (September 24, 2015)
LUCENE AS A CORE
• Lucene was originally written in
1999 by Doug Cutting (creator
(creator of Hadoop and Nutch;
http://www.china-cloud.com/uploads/allimg/121018/54-12101P92R1U7.jpg
MORE ABOUT SEARCH ENGINES
Riak Search
TIME TO TALK ABOUT
ELASTICSEARCH
https://www.elastic.co/products/elasticsearch
Near Real-Time Data (NRT)
Full-Text Search
Multilingual search, geolocation,
fuzzy search, did-you-mean
suggestions, autocomplete
https://www.elastic.co/products/elasticsearch
High Availability
Multitenancy
Distributed, Horizontally Scalable
https://www.elastic.co/products/elasticsearch
Document-Oriented
Schema-Free
Conflict Management
Optimistic Concurrency Control
https://www.elastic.co/products/elasticsearch
Apache 2 Open Source License
Awesome documentation
Large community
Developer-Friendly, RESTful API
Client libraries available for
many programming languages
and frameworks.
ELASTICSEARCH USERS
https://www.elastic.co/use-cases
https://en.wikipedia.org/wiki/Elasticsearch#Users
ELASTICSEARCH – PAST &
PRESENT
• 2004. Shay Banon (aka
Kimchy) started working on
Compass – distributed and
scalable Java Search
Engine on top of Lucene
• 2010. Initial release of ES
• Latest stable release: 1.7.2
(September 14, 2015)
• 2.0 to be released in
November
• 500K downloads per
• https://github.com/elastic/elasticsearch
http://opensource.hk/sites/default/files/u1/shay-banon.jpg
ELASTICSEARCH
AS A COMPANY
• 2012. Elasticsearch BV; Funding: $104M in 3
rounds, 100+ employees
• https://www.elastic.co/
• Product portfolio:
– Elasticsearch, Logstash, Kibana (ELK stack)
– Watcher
– Shield
– Marvel
– es-hadoop
– found
JUMP START
ELASTIC
D E M O T I M E
INSTALLATION &
CONFIGURATION
• Prerequisites:
– JDK 6 or above (recommended: JDK 8)
– RAM: min. 2Gb (recommended: 16–64 Gb for
production)
– CPU: number of cores over clock rate
– Disks: recommended SSD
• Homebrew, apt, yum: apt-get install
elasticsearch
• Download (ZIP, TAR, DEB, RPM):
https://www.elastic.co/downloads/elasticsearch
• Installation is absolutely straightforward and easy:
LET’S TALK ABOUT
TERMINOLOGY
Index ~ DB Schema
Type ~ DB Table
Documen
t
Record, JSON object
Mapping ~ Schema definition in RDBMS
DEMO #1
http://www.telikin.com/cms/images/shocked_senior_computer_user.jpg
ARCHITECTURE
AND
DEPLOYMENT
W H Y I S E L A S T I C S E A R C H E L A S T I C ?
Cluster One or more nodes which
share the same cluster name
Node Running instance of
Elasticsearch which belongs
to a cluster
Shard A portion of data – single
Lucene instance.
Default: 5 shards in an index
Primary
Shard
Master copy of data
Replica
Shard
Exact copy of a primary
shard.
Default: 1 replica
SINGLE-NODE CLUSTER
0 1 2 3 4
Hash
Function
{ "id": "123", "name": "John", … }
{ "id": "124", "name": "Patricia", … }
{ "id": "125", "name": "Scott", … }
Node
TWO-NODE CLUSTER
0 1 R2 3 R4Node
1
R0 R1 2 R3 4Node
2
* Ability to ‘route’ indexes to particular nodes (tag-based, e.g.: ‘strong’, ‘medium’, ‘weak’)
BENEFITS OF SHARDING
• Take advantage of multi-core CPUs (one shard is
a single Lucene instance = single JVM process)
• Horizontal scalability. Dynamic rebalancing
• Fault tolerance and cluster resilience
• NB! The number of shards can not be changed
dynamically on the fly – need to perform full
reindexing
• Max number of documents per shard:
2,147,483,519 – imposed by Lucene
ELASTICSEARCH NODE TYPES
• Data node node.data = true
• Master node node.master = true
• Communication client http.enabled =
true
• TCP ports 9200 (ext), 9300 (int)
• A node can play 2 or 3 roles at the same time
• Multicast discovery (true by default):
discovery.zen.ping.multicast.enabled
DEPLOYMENT DIAGRAM
INDEXING A DOCUMENT
https://www.elastic.co/guide/en/elasticsearch/guide/current/distrib-write.html
RETRIEVING A DOCUMENT
https://www.elastic.co/guide/en/elasticsearch/guide/current/distrib-read.html
• In terms of retrieving documents, primary and
replica shards are equivalent: data can be read
from either primary or replica shard
DISTRIBUTED SEARCH
• Given search query, retrieve 10 most relevant
results
https://www.elastic.co/guide/en/elasticsearch/guide/current/_query_phase.html
http://orig06.deviantart.net/a893/f/2008/017/1/f/coffee_break____by_dragonshy.jpg
CASE STUDIES
4 R E A L - L I F E P R O J E C T S
http://vignette1.wikia.nocookie.net/fallout/images/9/9d/FNV_Rake.png/revision/latest?cb=20140618212609&pat
h-prefix=ru
GENERAL INFO
• 4 projects, ~2 years
• RDBMS (MySQL, PostgreSQL) as a primary data
storage
• Both on-premise Elasticsearch installation (AWS,
MS Azure) and SaaS (Bonsai @ Heroku)
• 1 or 2 instances in a cluster
• Data volume: Gigabytes; millions of documents
• Back-end: Java, Ruby
#1. SOCIAL INFLUENCER
MARKETING PLATFORM
http://www.nclurbandesign.org/wp-content/uploads/2015/05/blog-pic-b2c.jpg
• Document types: Blog Posts, Bloggers
(Influencers)
• Elasticsearch usage:
– search and rank Influencers by category,
keywords, tags, location, audience,
influence
– search blog posts by keywords etc.
• Amount of data:
– Influencers: hundreds of thousands
– Blog Posts: millions
• ES cluster size: 2 instances
• Technology stack: Java, MySQL, Dynamo
#2. JOB SITE
http://www.roberthalf.com/sites/default/files/Media_Root/Images/RH-Images/Using-a-job-search-site.jpg
• Document types: Job Postings, Jobseekers
• Find relevant jobs
– Simple one-click search
– Advanced search (title, keywords, industry,
location/distance, salary, requirements)
• Elasticsearch as a Recommendation Engine
Recommend jobs based on: previously
applied/viewed jobs, location, distance,
schedule etc.
• 2 types of recommendations:
– Side banner (You also might be interested
in…)
– E-mail subscriptions every 2 weeks
• No fixed document structure (jobs from
different providers)
• Full-text search
• Fuzzy search
• Geolocation (distance)
• Weighted search: Boosted search
clauses
• Dynamic scripting (Mvel until v1.4.0, then
Groovy)
SEARCH QUERIES
SOME MORE FACTS
• Amount of data:
–Job postings: ~1M
–Applicants: ~20K
• Cluster size: 2 ‘medium’ EC2 instances
• Technology stack:
–Ruby on Rails
–Elasticsearch, PostgreSQL, Redis
–Heroku + add-ons, AWS (S3, EC2)
–Lots of 3rd party APIs and integrations
LESSONS LEARNED
• On-premise deployment (EC2) vs. SaaS
(Bonsai @ Heroku)
• Dynamic scripting
• PostgreSQL as a backup search engine
sucks
#3. CAR TRADING
http://bigskybeetles.com/wp-content/uploads/2014/12/restored-beetle-car.png
PARSING ADS
Price
$3900
1996 VW PASSAT SEDAN B4 TDI TURBO DIESEL 44+MPG
WAT???
• Fuzzy Search (Levenstein Distance Algorithm) used to
parse ads and classify cars
• Elasticsearch index contains dictionary (Year, Make,
Model, Trim)
• Used in conjunction with other approaches: regular
expressions, dictionaries of synonyms (VW  Volkswagen,
Chevy  Chevrolet), normalization (e.g. LX-370  LX370)
• Algorithm approach:
– Parse Year (1996)
– Search most relevant Make (VW, volkswagon 
Volkswagen)
– Search most relevant Model (Passat) for Make =
Volkswagen, Year = 1996
– Search most relevant Trim (TDi 4dr Sedan)
• Parsing quality: 90%
https://www.elastic.co/guide/en/elasticsearch/reference/1.6/query-dsl-fuzzy-query.html
#4. [NDA]
http://cdn.4glaza.ru/images/products/large/0/bresser-junior-loupe-2x-4x-dop6.jpg
SOME UNCOVERED INFO
• Check documents against duplicate content
• Shingle analysis (commonly used by copywriters and SEO
experts)
– I have a dream that one day this nation will rise up and
live…
– Normalization
I have a dream that one day this nation will rise up and
live…
– Splitting a text into shingles (n-grams), n = 3..10
have dream that
dream that this
that this nation
this nation will
…
– Replacement: latin ‘c’  cyrillic ‘c’
https://en.wikipedia.org/wiki/W-shingling
QUERY API IN
DEPTH
+ D E M O
FILTERS VS. QUERIES
As a general rule, filters should be used:
• for binary yes/no searches
• for queries on exact values
Filters are much faster than queries
Filters are usually great candidates for caching
27 Filters available (Elasticsearch 1.7.1)
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filters.html
QUERIES VS. FILTERS
As a general rule, queries should be used instead
of filters:
• for full text search
• where the result depends on a relevance score
Common approach: Filter as many records as
possible, then query them.
38 Queries available (Elasticsearch v 1.7.1)
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-queries.html
DEMO #2
http://www.socialtalent.co/wp-content/uploads/blog-content/computer-user-confused.jpg
SOME THEORY BEHIND
RELEVANCE SCORING
full AND text AND search AND (elasticsearch OR
lucene)
• Term Frequency: How often does the term
appear in the document?
• Inverse Document Frequency: How often does
the term appear in all documents in the
collection?
• Field-length norm: How long is the field?
https://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html
http://blog.qbox.io/optimizing-search-results-in-elasticsearch-with-scoring-and-boosting
MORE COOL FEATURES
• Indexing attachments: MS Office, ePub, PDF
(Apache Tika)
• Autocomplete suggestion:
• Did-you-mean suggestion:
• Highlight results:
SEARCH IMAGES
https://www.theloopyewe.com/shop/search/cd/0-100~75-90-50~18-12-12/g/59A9BAC5/
https://github.com/kzwang/elasticsearch-image
USING ELASTIC
IN RAILS
APPLICATIONS
A P P R O A C H E S A N D T O O L S
ELASTICSEARCH-RUBY
• https://github.com/elastic/elasticsearch-ruby
• Includes two packages:
elasticsearch-transport + elasticsearch-api
• Client for connecting to an Elasticsearch
cluster
• Ruby API for the Elasticsearch's REST API
• Various extensions and utilities
ELASTICSEARCH-RAILS
• https://github.com/elastic/elasticsearch-rails
• Includes three packages:
elasticsearch-model + elasticsearch-persistence
+ elasticsearch-rails
• ActiveModel integration with adapters for
ActiveRecord and Mongoid
• Enumerable-based wrapper for search results;
ActiveRecord::Relation-based wrapper for
returning search results as records
• Support for Kaminari and WillPaginate
pagination
• Convenience methods for (re)creating the
index, setting up mappings, indexing
documents, …
MY WAY (RAILS 4 APP)
Gemfile
config/environments/production.rb
MY WAY (RAILS 4 APP)
job.rb
MY WAY (RAILS 4 APP)
job.rb
MY WAY (RAILS 4 APP)
job.rb
ELASTICSEARCH SEARCH QUERY
MY WAY (RAILS 4 APP)
job_helper.rb
MY WAY (RAILS 4 APP)
job_helper.rb
MY WAY (RAILS 4 APP)
elasticsearch.rake
KINDA
SUMMARY
ELASTICSEARCH DRAWBACKS
• No transaction support. Elasticsearch is not a
database.
• No joins, constraints and other RDBMS features
• Durability and consistency issues, data loss:
– https://aphyr.com/posts/323-call-me-maybe-
elasticsearch-1-5-0
– https://www.elastic.co/guide/en/elasticsearch/resili
ency/current/index.html
PERFORMANCE?
http://blog.socialcast.com/realtime-search-solr-vs-elasticsearch/
http://solr-vs-elasticsearch.com/
• Apache Solr can be faster than ES in search-only
scenarios while Elasticsearch usually outperforms
Solr when doing writes and reads concurrently
• Sphinx is faster at indexing (up to 15MB/s per
core)
• Performance issues can be usually fixed by
horizontal scaling
SUMMARY
• ES is not a silver bullet but really really powerful
tool
• Elasticsearch is not a RDBMS and is not supposed
to act as a database. Choose your tools
properly. Leverage the synergy of DB + ES
• Elasticsearch is dead simple at the start but
might be sophisticated later as you go
• Kick off easily, then hire a good DevOps
engineer for best results
• Ecosystem around Elasticsearch is just amazing
• Give it a try – it can bring a lot of value to your
product and your CV ;)
http://www.aperfectworld.org/clipart/gestures/rockhard11.png
QUESTIONS?
http://dolhomeschoolcenter.com/wp-content/uploads/2013/02/FAQ.png
THANK YOU!
http://conveyancingderby.co/wp-content/uploads/2011/07/cat-card.jpg
USEFUL LINKS
• Elasticsearch:
https://www.elastic.co/products/elasticsearch
• Extended presentation about Elasticsearch and its
ecosystem:
https://www.youtube.com/watch?v=GL7xC5kpb-c
• Scripts for the demos:
https://github.com/opanchenko/morning-at-lohika-ELK

More Related Content

PDF
Intro to Apache Solr
PDF
A Survey of Elasticsearch Usage
PDF
Solr Recipes
PDF
Delhi elasticsearch meetup
PDF
Downtown SF Lucene/Solr Meetup: Developing Scalable User Search for PlayStati...
PPTX
Enhance WordPress Search Using Sphinx
PPTX
Taming Text
PPTX
Search and analyze your data with elasticsearch
Intro to Apache Solr
A Survey of Elasticsearch Usage
Solr Recipes
Delhi elasticsearch meetup
Downtown SF Lucene/Solr Meetup: Developing Scalable User Search for PlayStati...
Enhance WordPress Search Using Sphinx
Taming Text
Search and analyze your data with elasticsearch

What's hot (20)

PDF
Apache Solr crash course
PDF
Apache Jackrabbit
PPT
Content Management With Apache Jackrabbit
PDF
Best practices for highly available and large scale SolrCloud
PDF
Apache Solr 5.0 and beyond
PDF
Fluentd - Flexible, Stable, Scalable
PDF
Search all the things
PDF
Modernizing WordPress Search with Elasticsearch
PPTX
Introduction to Redis
PPTX
Cloud Security Monitoring and Spark Analytics
PDF
Solr Flair
PDF
Building a Lightweight Discovery Interface for China's Patents@NYC Solr/Lucen...
PDF
Modernizing WordPress Search with Elasticsearch
PDF
Flexible search in Apache Jackrabbit Oak
PDF
pandas.(to/from)_sql is simple but not fast
PDF
MYSQL Query Anti-Patterns That Can Be Moved to Sphinx
PPTX
Oak, the architecture of Apache Jackrabbit 3
PDF
Apache Solr! Enterprise Search Solutions at your Fingertips!
PPTX
PPTX
Scaling SolrCloud to a large number of Collections
Apache Solr crash course
Apache Jackrabbit
Content Management With Apache Jackrabbit
Best practices for highly available and large scale SolrCloud
Apache Solr 5.0 and beyond
Fluentd - Flexible, Stable, Scalable
Search all the things
Modernizing WordPress Search with Elasticsearch
Introduction to Redis
Cloud Security Monitoring and Spark Analytics
Solr Flair
Building a Lightweight Discovery Interface for China's Patents@NYC Solr/Lucen...
Modernizing WordPress Search with Elasticsearch
Flexible search in Apache Jackrabbit Oak
pandas.(to/from)_sql is simple but not fast
MYSQL Query Anti-Patterns That Can Be Moved to Sphinx
Oak, the architecture of Apache Jackrabbit 3
Apache Solr! Enterprise Search Solutions at your Fingertips!
Scaling SolrCloud to a large number of Collections
Ad

Viewers also liked (20)

PPT
Conférence Drupagora 2011: Drupal et les moteurs de recherche: Apache SolR
PPTX
Develop open source search engine
ODP
The Xapian Open Source Search Engine
PDF
Overcommit for #pivorak
PPT
Digital Nomading on Rails
PDF
Pivorak Clojure by Dmytro Bignyak
PPTX
Права інтелектуальної власності в IT сфері.
PDF
Espec |> Elixir BDD
PDF
"Ruby meets Event Sourcing" by Anton Paisov
PDF
Lightweight APIs in mRuby
PPTX
Building Component Based Rails Applications. Part 2.
PDF
Functional Immutable CSS
PDF
GIS on Rails
PPTX
Building component based rails applications. part 1.
PDF
The Silver Bullet Syndrome by Alexey Vasiliev
PDF
"5 skills to master" by Alexander Skakunov
PDF
UDD: building polyglot anti-framework by Marek Piasecki
PDF
Trailblazer Introduction by Nick Sutterer
PDF
“Object Oriented Ruby” by Michał Papis.
PDF
Andriy Vandakurov about "Frontend. Global domination"
Conférence Drupagora 2011: Drupal et les moteurs de recherche: Apache SolR
Develop open source search engine
The Xapian Open Source Search Engine
Overcommit for #pivorak
Digital Nomading on Rails
Pivorak Clojure by Dmytro Bignyak
Права інтелектуальної власності в IT сфері.
Espec |> Elixir BDD
"Ruby meets Event Sourcing" by Anton Paisov
Lightweight APIs in mRuby
Building Component Based Rails Applications. Part 2.
Functional Immutable CSS
GIS on Rails
Building component based rails applications. part 1.
The Silver Bullet Syndrome by Alexey Vasiliev
"5 skills to master" by Alexander Skakunov
UDD: building polyglot anti-framework by Marek Piasecki
Trailblazer Introduction by Nick Sutterer
“Object Oriented Ruby” by Michał Papis.
Andriy Vandakurov about "Frontend. Global domination"
Ad

Similar to Elastic pivorak (20)

PPTX
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
PDF
Elasticsearch Introduction at BigData meetup
PDF
ElasticSearch: Distributed Multitenant NoSQL Datastore and Search Engine
PPTX
Case study of Rujhaan.com (A social news app )
PPTX
Qui Quaerit, Reperit. AWS Elasticsearch in Action
PDF
Introduction to elasticsearch
PPTX
Episerver and search engines
PPTX
Elastic search overview
PPTX
Elastic & Azure & Episever, Case Evira
PPTX
Elasticsearch Introduction
PPTX
Oct meetup open stack 101 clean
PPTX
An Introduction to Elastic Search.
PDF
Introduction to libre « fulltext » technology
PDF
MySQL Day Paris 2016 - MySQL as a Document Store
PDF
Data Engineering with Solr and Spark
PDF
DSpace Under the Hood
PPTX
Elasticsearch - Scalability and Multitenancy
PDF
No sq lv1_0
PPTX
OpenStack 101
PPTX
OpenStack 101 - All Things Open 2015
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Elasticsearch Introduction at BigData meetup
ElasticSearch: Distributed Multitenant NoSQL Datastore and Search Engine
Case study of Rujhaan.com (A social news app )
Qui Quaerit, Reperit. AWS Elasticsearch in Action
Introduction to elasticsearch
Episerver and search engines
Elastic search overview
Elastic & Azure & Episever, Case Evira
Elasticsearch Introduction
Oct meetup open stack 101 clean
An Introduction to Elastic Search.
Introduction to libre « fulltext » technology
MySQL Day Paris 2016 - MySQL as a Document Store
Data Engineering with Solr and Spark
DSpace Under the Hood
Elasticsearch - Scalability and Multitenancy
No sq lv1_0
OpenStack 101
OpenStack 101 - All Things Open 2015

More from Pivorak MeetUp (20)

PDF
Lisp(Lots of Irritating Superfluous Parentheses)
PDF
Some strange stories about mocks.
PDF
Business-friendly library for inter-service communication
PDF
How i was a team leader once
PDF
Rails MVC by Sergiy Koshovyi
PDF
Introduction to Rails by Evgeniy Hinyuk
PPTX
Ruby OOP (in Ukrainian)
PDF
Testing in Ruby
PDF
Ruby Summer Course by #pivorak & OnApp - OOP Basics in Ruby
PDF
The Saga Pattern: 2 years later by Robert Pankowecki
PDF
Data and Bounded Contexts by Volodymyr Byno
PDF
Successful Remote Development by Alex Rozumii
PDF
Origins of Elixir programming language
PDF
Multi language FBP with Flowex by Anton Mishchuk
PDF
Detective story of one clever user - Lightning Talk By Sergiy Kukunin
PDF
CryptoParty: Introduction by Olexii Markovets
PDF
How to make first million by 30 (or not, but tryin') - by Marek Piasecki
PDF
GIS on Rails by Oleksandr Kychun
PDF
Unikernels - Keep It Simple to the Bare Metal
PDF
HTML Canvas tips & tricks - Lightning Talk by Roman Rodych
Lisp(Lots of Irritating Superfluous Parentheses)
Some strange stories about mocks.
Business-friendly library for inter-service communication
How i was a team leader once
Rails MVC by Sergiy Koshovyi
Introduction to Rails by Evgeniy Hinyuk
Ruby OOP (in Ukrainian)
Testing in Ruby
Ruby Summer Course by #pivorak & OnApp - OOP Basics in Ruby
The Saga Pattern: 2 years later by Robert Pankowecki
Data and Bounded Contexts by Volodymyr Byno
Successful Remote Development by Alex Rozumii
Origins of Elixir programming language
Multi language FBP with Flowex by Anton Mishchuk
Detective story of one clever user - Lightning Talk By Sergiy Kukunin
CryptoParty: Introduction by Olexii Markovets
How to make first million by 30 (or not, but tryin') - by Marek Piasecki
GIS on Rails by Oleksandr Kychun
Unikernels - Keep It Simple to the Bare Metal
HTML Canvas tips & tricks - Lightning Talk by Roman Rodych

Recently uploaded (20)

PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
The Future of Smart Factories Why Embedded Analytics Leads the Way
PPTX
Maximizing Revenue with Marketo Measure: A Deep Dive into Multi-Touch Attribu...
PDF
Community & News Update Q2 Meet Up 2025
PPTX
Odoo Consulting Services by CandidRoot Solutions
PDF
Best Practices for Rolling Out Competency Management Software.pdf
PDF
Comprehensive Salesforce Implementation Services.pdf
PPTX
Materi-Enum-and-Record-Data-Type (1).pptx
PPTX
10 Hidden App Development Costs That Can Sink Your Startup.pptx
PPTX
Materi_Pemrograman_Komputer-Looping.pptx
PDF
Become an Agentblazer Champion Challenge
PDF
How to Seamlessly Integrate Salesforce Data Cloud with Marketing Cloud.pdf
DOCX
The Five Best AI Cover Tools in 2025.docx
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
Teaching Reproducibility and Embracing Variability: From Floating-Point Exper...
PPTX
Benefits of DCCM for Genesys Contact Center
PDF
Best Mobile App Development Company in Lucknow - Code Crafter Web Solutions
PPTX
Presentation of Computer CLASS 2 .pptx
PDF
Perfecting Gamer’s Experiences with Performance Testing for Gaming Applicatio...
PDF
Become an Agentblazer Champion Challenge Kickoff
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
The Future of Smart Factories Why Embedded Analytics Leads the Way
Maximizing Revenue with Marketo Measure: A Deep Dive into Multi-Touch Attribu...
Community & News Update Q2 Meet Up 2025
Odoo Consulting Services by CandidRoot Solutions
Best Practices for Rolling Out Competency Management Software.pdf
Comprehensive Salesforce Implementation Services.pdf
Materi-Enum-and-Record-Data-Type (1).pptx
10 Hidden App Development Costs That Can Sink Your Startup.pptx
Materi_Pemrograman_Komputer-Looping.pptx
Become an Agentblazer Champion Challenge
How to Seamlessly Integrate Salesforce Data Cloud with Marketing Cloud.pdf
The Five Best AI Cover Tools in 2025.docx
How Creative Agencies Leverage Project Management Software.pdf
Teaching Reproducibility and Embracing Variability: From Floating-Point Exper...
Benefits of DCCM for Genesys Contact Center
Best Mobile App Development Company in Lucknow - Code Crafter Web Solutions
Presentation of Computer CLASS 2 .pptx
Perfecting Gamer’s Experiences with Performance Testing for Gaming Applicatio...
Become an Agentblazer Champion Challenge Kickoff

Elastic pivorak