SlideShare a Scribd company logo
MadeinNorway
Web
CMS
Nashorn /
"NodeJS"
Security
Framework
Module System
(OSGi)
HTML5
Framework
(Typescript)
Storage
(Elasticsearch)
Storing data
• Git
• Java Content Repository
• Elasticsearch
content repository
_id = 1001
_name = ‘OSLO’
_parent = ROOT
displayName = ‘Oslo’
data.population = 647676
data.area = 454.03
_id = 1001
_name = ‘oslo’
_parent = ROOT
displayName = ‘Oslo’
data.population = 647676
data.area = 454.03
location =
geoPoint(’59.9127300,10.7460900’)
_ID = 1041
_name = ‘elasticon’
_parent = ‘4021’
category = 'conference'
displayName = ‘elasticon'
keywords = ['ELK', elasticsearch’]
location = ref(2)
description = ‘largest gathering of
ELK expertise in the world’
content repository
_id = 13
_name = ‘opera.png’
_parent = ‘1001
size = 70056
height = 360
_id = 4021
_name = ‘sf’
_parent = ROOT
displayName = ‘San Francisco’
data.population = 837442
data.area = 600.6
repositories
AccessControl AccessControl AccessControl
Staging support Staging support Staging support
Versioning Versioning Versioning
Search Search Search
myDataRepo myUserRepo myStuffRepo
node versions
BlobStore
_id = 1001
displayName = ‘Oslo’
data.population = 647676
data.area = 454.03
location =
geoPoint(’59.9127300,10.7460900’)
_id = 13
size = 70056
height = 360
width = 1024
_id = 1001
displayName = ‘Oslo’
data.population = 647676
data.area = 454.03
_id = 1041
category = 'conference'
displayName = ‘elasticon'
keywords = ['ELK', elasticsearch’]
location = ref(2)
description = ‘largest gathering of
ELK expertise in the world’
_id = 4021
displayName = ‘San
Francisco’
data.population = 837442
data.area = 600.6
branch
_id = 2
_version = 1
type = ‘city’
displayName = ‘San Francisco’
data.population = 837442
…
_id = 1431-1240-1231-1234
_version = 1
category = 'conference'
name = 'Elasticon'
keywords = ['ELK', elasticsearch’]
…

_id = 1234-1234-1234-1234
_version = 1
displayName = ‘Oslo’
data.population = 647676
…
_id = 1234-1234-1234-1234
_version = 2
displayName = ‘Oslo’
data.population = 647676
location =
geoPoint(’59.9127300,10.7460900’)/
_id = 1010
_version = 1
size = 70056
height = 360
…
/oslo
/oslo/opera.png
/sf
/sf/elasticon
branch: master
branch
_id = 2
_version = 1
type = ‘city’
displayName = ‘San Francisco’
data.population = 837442
…
_id = 1431-1240-1231-1234
_version = 1
category = 'conference'
name = 'Elasticon'
keywords = ['ELK', elasticsearch’]
…

_id = 1234-1234-1234-1234
_version = 1
displayName = ‘Oslo’
data.population = 647676
…
branch: master
/
/oslo
branch: myDrafts
_id = 1234-1234-1234-1234
_version = 2
displayName = ‘Oslo’
data.population = 647676
location =
geoPoint(’59.9127300,10.7460900’)/
_id = 1010
_version = 1
size = 70056
height = 360
…
/oslo
/oslo/opera.png
/sf
/sf/elasticon
/sf
/elasticon
branch: push
_id = 2
_version = 1
type = ‘city’
displayName = ‘San Francisco’
data.population = 837442
…
_id = 1431-1240-1231-1234
_version = 1
category = 'conference'
name = 'Elasticon'
keywords = ['ELK', elasticsearch’]
…

_id = 1234-1234-1234-1234
_version = 1
displayName = ‘Oslo’
data.population = 647676
…
branch: masterbranch: myDrafts
_id = 1234-1234-1234-1234
_version = 2
displayName = ‘Oslo’
data.population = 647676
location =
geoPoint(’59.9127300,10.7460900’)/
_id = 1010
_version = 1
size = 70056
height = 360
…
/oslo
/oslo/opera.png
/sf
/sf/elasticon
/
/oslo
/oslo/opera.png
/sf
/sf/elasticon
indices
store-indices search-indices
store
search-index
type : version
type : branch
search
store-index search-index
type: branch-1
type : branch-2
type : branch-n
mapping
Nodes are schema-less
indexField = property-path + value type
mapping cont.
• myProperty (String)
• myProperty._analyzed
• myProperty._ngram
• myProperty._number
• myProperty._geoPoint
• myProperty._orderBy
string mapping
“name": “san-fancisco”
“name._orderby": “san-fancisco"
name = ‘san-fancisco’
text mapping
“description": “this is…”
“description._fulltext": “this is…”
“description._ngram": “this is…"
“description._orderby": “this is…"
description = ‘this is the description’
Numeric mapping
“data.area": “600.6”
“data.area._number”: 600.6
“data.area._orderby": “dc082c4cccccccccd"
data.area = 600.6
ES AggregationsES Queries
search
ES Filters
Enonic XP Query-language
Enonic XP Search API
javascript API
execute('content.query', {
"count": 100,
"start": 0,
"query": "fulltext('myField', 'searching for cheese', 'AND')",
"filter": “type=‘article’",
"aggregations": {
"genders": {
"terms": {
"field": "gender",
"order": "_count asc",
"size": 2
}
}
}
});
query-language
title LIKE ‘elast*’ OR
category IN (‘conference’, ‘event’)
ORDER BY title ASC
query-language
{
"from" : 0,
"size" : 10,
"query" : {
"filtered" : {
"query" : {
"bool" : {
"should" : [ {
"wildcard" : {
"title" : { "wildcard" : “elast*” }
}
}, {
"bool" : {
"should" : [ {
"term" : { "category" : "conference" }
}, {
"term" : { “category" : “event" }
} ]
}
} ]
}
},
"filter" : {
"terms" : {
"_permissions.read" : [ "role:system.authenticated", "user:system:test-user" ]
}
}
}
},
"sort" : [ {
"title._orderby" : {
"order" : "asc",
"ignore_unmapped" : true
}
} ]
}
query-language
category = ‘conference’
AND ngram(‘description’, ‘elast elk’, ‘OR’)
query-language
{
"from" : 0,
"size" : 10,
"query" : {
"filtered" : {
"query" : {
"bool" : {
"must" : [ {
"term" : {
"category" : "conference"
}
}, {
"simple_query_string" : {
"query" : "elast elk",
"fields" : [ "description._ngram" ],
"default_operator" : "or"
}
} ]
}
},
"filter" : {
"terms" : {
"_permissions.read" : [ "role:system.authenticated", "user:system:test-user" ]
}
}
}
}
}
security
• _permissions.create
• _permissions.delete
• _permissions.modify
• _permissions.publish
• _permissions.read
• _permissions.readpermissions
• _permissions.writepermissions
security filter
"filter" : {
"terms" : {
"_permissions.read" : [
"role:system.authenticated",
"user:system:test-user"
"group:system:my-group" ]
}
}
questions?
github.com/enonic/xp

More Related Content

What's hot

Geospatial Enhancements in MongoDB 2.4
Geospatial Enhancements in MongoDB 2.4Geospatial Enhancements in MongoDB 2.4
Geospatial Enhancements in MongoDB 2.4
MongoDB
 
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQLENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
Horacio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQLENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
Horacio Gonzalez
 
Php5
Php5Php5
D3 Force-Directed Graphs
D3 Force-Directed GraphsD3 Force-Directed Graphs
D3 Force-Directed Graphs
Maxim Kuleshov
 
MongoDB at GUL
MongoDB at GULMongoDB at GUL
MongoDB at GUL
Israel Gutiérrez
 
Сергей Матвеенко: MongoEngine: NoORM for NoSQL
Сергей Матвеенко: MongoEngine: NoORM for NoSQLСергей Матвеенко: MongoEngine: NoORM for NoSQL
Сергей Матвеенко: MongoEngine: NoORM for NoSQL
it-people
 
jQuery Datatables With MongDb
jQuery Datatables With MongDbjQuery Datatables With MongDb
jQuery Datatables With MongDb
sliimohara
 

What's hot (8)

Geospatial Enhancements in MongoDB 2.4
Geospatial Enhancements in MongoDB 2.4Geospatial Enhancements in MongoDB 2.4
Geospatial Enhancements in MongoDB 2.4
 
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQLENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
 
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQLENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
 
Php5
Php5Php5
Php5
 
D3 Force-Directed Graphs
D3 Force-Directed GraphsD3 Force-Directed Graphs
D3 Force-Directed Graphs
 
MongoDB at GUL
MongoDB at GULMongoDB at GUL
MongoDB at GUL
 
Сергей Матвеенко: MongoEngine: NoORM for NoSQL
Сергей Матвеенко: MongoEngine: NoORM for NoSQLСергей Матвеенко: MongoEngine: NoORM for NoSQL
Сергей Матвеенко: MongoEngine: NoORM for NoSQL
 
jQuery Datatables With MongDb
jQuery Datatables With MongDbjQuery Datatables With MongDb
jQuery Datatables With MongDb
 

Viewers also liked

Keyboard wizard
Keyboard wizardKeyboard wizard
Keyboard wizard
enonic
 
Elastic{on} - Tracking of events within ING
Elastic{on} - Tracking of events within INGElastic{on} - Tracking of events within ING
Elastic{on} - Tracking of events within ING
ING-IT
 
Changing Your Mindset: Getting Started With Test-Driven Development
Changing Your Mindset: Getting Started With Test-Driven DevelopmentChanging Your Mindset: Getting Started With Test-Driven Development
Changing Your Mindset: Getting Started With Test-Driven Development
Viget Labs
 
Getting Started with MongoDB and Node.js
Getting Started with MongoDB and Node.jsGetting Started with MongoDB and Node.js
Getting Started with MongoDB and Node.js
Grant Goodale
 
Getting Started With Agile
Getting Started With AgileGetting Started With Agile
Getting Started With Agile
Mike Cottmeyer
 
Version Control with SVN
Version Control with SVNVersion Control with SVN
Version Control with SVN
PHPBelgium
 
Tuning Elasticsearch Indexing Pipeline for Logs
Tuning Elasticsearch Indexing Pipeline for LogsTuning Elasticsearch Indexing Pipeline for Logs
Tuning Elasticsearch Indexing Pipeline for Logs
Sematext Group, Inc.
 
Svn Basic Tutorial
Svn Basic TutorialSvn Basic Tutorial
Svn Basic Tutorial
Marco Pivetta
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
Ruslan Zavacky
 
[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화
NAVER D2
 
Building a Dataset Search Engine with Spark and Elasticsearch: Spark Summit E...
Building a Dataset Search Engine with Spark and Elasticsearch: Spark Summit E...Building a Dataset Search Engine with Spark and Elasticsearch: Spark Summit E...
Building a Dataset Search Engine with Spark and Elasticsearch: Spark Summit E...
Spark Summit
 
Real-Time Data Exploration and Analytics with Amazon Elasticsearch Service
Real-Time Data Exploration and Analytics with Amazon Elasticsearch ServiceReal-Time Data Exploration and Analytics with Amazon Elasticsearch Service
Real-Time Data Exploration and Analytics with Amazon Elasticsearch Service
Amazon Web Services
 
21 LinkedIn Profile Tips to Advance Your Content Marketing Career
21 LinkedIn Profile Tips to Advance Your Content Marketing Career21 LinkedIn Profile Tips to Advance Your Content Marketing Career
21 LinkedIn Profile Tips to Advance Your Content Marketing Career
Content Marketing Institute
 
ElasticSearch Basic Introduction
ElasticSearch Basic IntroductionElasticSearch Basic Introduction
ElasticSearch Basic Introduction
Mayur Rathod
 
Getting Started with Docker on AWS
Getting Started with Docker on AWSGetting Started with Docker on AWS
Getting Started with Docker on AWS
Amazon Web Services
 
All About Me Powerpoint
All About Me PowerpointAll About Me Powerpoint
All About Me Powerpoint
Amber Bauerly
 
About Me PowerPoint Presentation
About Me PowerPoint PresentationAbout Me PowerPoint Presentation
About Me PowerPoint Presentation
Leah Stensland
 
An Introduction to Elastic Search.
An Introduction to Elastic Search.An Introduction to Elastic Search.
An Introduction to Elastic Search.
Jurriaan Persyn
 

Viewers also liked (18)

Keyboard wizard
Keyboard wizardKeyboard wizard
Keyboard wizard
 
Elastic{on} - Tracking of events within ING
Elastic{on} - Tracking of events within INGElastic{on} - Tracking of events within ING
Elastic{on} - Tracking of events within ING
 
Changing Your Mindset: Getting Started With Test-Driven Development
Changing Your Mindset: Getting Started With Test-Driven DevelopmentChanging Your Mindset: Getting Started With Test-Driven Development
Changing Your Mindset: Getting Started With Test-Driven Development
 
Getting Started with MongoDB and Node.js
Getting Started with MongoDB and Node.jsGetting Started with MongoDB and Node.js
Getting Started with MongoDB and Node.js
 
Getting Started With Agile
Getting Started With AgileGetting Started With Agile
Getting Started With Agile
 
Version Control with SVN
Version Control with SVNVersion Control with SVN
Version Control with SVN
 
Tuning Elasticsearch Indexing Pipeline for Logs
Tuning Elasticsearch Indexing Pipeline for LogsTuning Elasticsearch Indexing Pipeline for Logs
Tuning Elasticsearch Indexing Pipeline for Logs
 
Svn Basic Tutorial
Svn Basic TutorialSvn Basic Tutorial
Svn Basic Tutorial
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
 
[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화
 
Building a Dataset Search Engine with Spark and Elasticsearch: Spark Summit E...
Building a Dataset Search Engine with Spark and Elasticsearch: Spark Summit E...Building a Dataset Search Engine with Spark and Elasticsearch: Spark Summit E...
Building a Dataset Search Engine with Spark and Elasticsearch: Spark Summit E...
 
Real-Time Data Exploration and Analytics with Amazon Elasticsearch Service
Real-Time Data Exploration and Analytics with Amazon Elasticsearch ServiceReal-Time Data Exploration and Analytics with Amazon Elasticsearch Service
Real-Time Data Exploration and Analytics with Amazon Elasticsearch Service
 
21 LinkedIn Profile Tips to Advance Your Content Marketing Career
21 LinkedIn Profile Tips to Advance Your Content Marketing Career21 LinkedIn Profile Tips to Advance Your Content Marketing Career
21 LinkedIn Profile Tips to Advance Your Content Marketing Career
 
ElasticSearch Basic Introduction
ElasticSearch Basic IntroductionElasticSearch Basic Introduction
ElasticSearch Basic Introduction
 
Getting Started with Docker on AWS
Getting Started with Docker on AWSGetting Started with Docker on AWS
Getting Started with Docker on AWS
 
All About Me Powerpoint
All About Me PowerpointAll About Me Powerpoint
All About Me Powerpoint
 
About Me PowerPoint Presentation
About Me PowerPoint PresentationAbout Me PowerPoint Presentation
About Me PowerPoint Presentation
 
An Introduction to Elastic Search.
An Introduction to Elastic Search.An Introduction to Elastic Search.
An Introduction to Elastic Search.
 

Similar to Enonic Content Repository built on elasticsearch

NoSQL in SQL - Lior Altarescu
NoSQL in SQL - Lior Altarescu NoSQL in SQL - Lior Altarescu
NoSQL in SQL - Lior Altarescu
Wix Engineering
 
Working with NoSQL in a SQL Database (XDevApi)
Working with NoSQL in a SQL Database (XDevApi)Working with NoSQL in a SQL Database (XDevApi)
Working with NoSQL in a SQL Database (XDevApi)
Lior Altarescu
 
EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...
EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...
EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...
Evolve The Adobe Digital Marketing Community
 
Omnisearch in AEM 6.2 - Search All the Things
Omnisearch in AEM 6.2 - Search All the ThingsOmnisearch in AEM 6.2 - Search All the Things
Omnisearch in AEM 6.2 - Search All the Things
Justin Edelson
 
Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...
Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...
Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...
Trivadis
 
Elasticsearch and Symfony Integration - Debarko De
Elasticsearch and Symfony Integration - Debarko DeElasticsearch and Symfony Integration - Debarko De
Elasticsearch and Symfony Integration - Debarko De
Debarko De
 
RedisConf18 - Redis and Elasticsearch
RedisConf18 - Redis and ElasticsearchRedisConf18 - Redis and Elasticsearch
RedisConf18 - Redis and Elasticsearch
Redis Labs
 
MySQL Without the SQL - Oh My! -> MySQL Document Store -- Confoo.CA 2019
MySQL Without the SQL - Oh My! -> MySQL Document Store -- Confoo.CA 2019MySQL Without the SQL - Oh My! -> MySQL Document Store -- Confoo.CA 2019
MySQL Without the SQL - Oh My! -> MySQL Document Store -- Confoo.CA 2019
Dave Stokes
 
Streaming using Kafka Flink & Elasticsearch
Streaming using Kafka Flink & ElasticsearchStreaming using Kafka Flink & Elasticsearch
Streaming using Kafka Flink & Elasticsearch
Keira Zhou
 
MySQL flexible schema and JSON for Internet of Things
MySQL flexible schema and JSON for Internet of ThingsMySQL flexible schema and JSON for Internet of Things
MySQL flexible schema and JSON for Internet of Things
Alexander Rubin
 
DataFrame: Spark's new abstraction for data science by Reynold Xin of Databricks
DataFrame: Spark's new abstraction for data science by Reynold Xin of DatabricksDataFrame: Spark's new abstraction for data science by Reynold Xin of Databricks
DataFrame: Spark's new abstraction for data science by Reynold Xin of Databricks
Data Con LA
 
04 data accesstechnologies
04 data accesstechnologies04 data accesstechnologies
04 data accesstechnologies
Bat Programmer
 
Elasticsearch War Stories
Elasticsearch War StoriesElasticsearch War Stories
Elasticsearch War Stories
Arno Broekhof
 
FIWARE Global Summit - FIWARE Context Information Management
FIWARE Global Summit - FIWARE Context Information ManagementFIWARE Global Summit - FIWARE Context Information Management
FIWARE Global Summit - FIWARE Context Information Management
FIWARE
 
LOD2 Webinar: SIREn
LOD2 Webinar: SIREnLOD2 Webinar: SIREn
JSON, A Splash of SODA, and a SQL Chaser: Real-World Use Cases for Autonomous...
JSON, A Splash of SODA, and a SQL Chaser: Real-World Use Cases for Autonomous...JSON, A Splash of SODA, and a SQL Chaser: Real-World Use Cases for Autonomous...
JSON, A Splash of SODA, and a SQL Chaser: Real-World Use Cases for Autonomous...
Jim Czuprynski
 
Rage Against the Framework
Rage Against the FrameworkRage Against the Framework
Rage Against the Framework
David Ortinau
 
(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...
(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...
(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...
Amazon Web Services
 
Webinar: What's New in Solr 6
Webinar: What's New in Solr 6Webinar: What's New in Solr 6
Webinar: What's New in Solr 6
Lucidworks
 
Matching Dirty Data
Matching Dirty DataMatching Dirty Data
Matching Dirty Data
Jeff Sherwood
 

Similar to Enonic Content Repository built on elasticsearch (20)

NoSQL in SQL - Lior Altarescu
NoSQL in SQL - Lior Altarescu NoSQL in SQL - Lior Altarescu
NoSQL in SQL - Lior Altarescu
 
Working with NoSQL in a SQL Database (XDevApi)
Working with NoSQL in a SQL Database (XDevApi)Working with NoSQL in a SQL Database (XDevApi)
Working with NoSQL in a SQL Database (XDevApi)
 
EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...
EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...
EVOLVE'16 | Enhance | Oscar Bolaños & Justin Edelson | Search All the Things:...
 
Omnisearch in AEM 6.2 - Search All the Things
Omnisearch in AEM 6.2 - Search All the ThingsOmnisearch in AEM 6.2 - Search All the Things
Omnisearch in AEM 6.2 - Search All the Things
 
Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...
Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...
Trivadis TechEvent 2016 Polybase challenges Hive relational access to non-rel...
 
Elasticsearch and Symfony Integration - Debarko De
Elasticsearch and Symfony Integration - Debarko DeElasticsearch and Symfony Integration - Debarko De
Elasticsearch and Symfony Integration - Debarko De
 
RedisConf18 - Redis and Elasticsearch
RedisConf18 - Redis and ElasticsearchRedisConf18 - Redis and Elasticsearch
RedisConf18 - Redis and Elasticsearch
 
MySQL Without the SQL - Oh My! -> MySQL Document Store -- Confoo.CA 2019
MySQL Without the SQL - Oh My! -> MySQL Document Store -- Confoo.CA 2019MySQL Without the SQL - Oh My! -> MySQL Document Store -- Confoo.CA 2019
MySQL Without the SQL - Oh My! -> MySQL Document Store -- Confoo.CA 2019
 
Streaming using Kafka Flink & Elasticsearch
Streaming using Kafka Flink & ElasticsearchStreaming using Kafka Flink & Elasticsearch
Streaming using Kafka Flink & Elasticsearch
 
MySQL flexible schema and JSON for Internet of Things
MySQL flexible schema and JSON for Internet of ThingsMySQL flexible schema and JSON for Internet of Things
MySQL flexible schema and JSON for Internet of Things
 
DataFrame: Spark's new abstraction for data science by Reynold Xin of Databricks
DataFrame: Spark's new abstraction for data science by Reynold Xin of DatabricksDataFrame: Spark's new abstraction for data science by Reynold Xin of Databricks
DataFrame: Spark's new abstraction for data science by Reynold Xin of Databricks
 
04 data accesstechnologies
04 data accesstechnologies04 data accesstechnologies
04 data accesstechnologies
 
Elasticsearch War Stories
Elasticsearch War StoriesElasticsearch War Stories
Elasticsearch War Stories
 
FIWARE Global Summit - FIWARE Context Information Management
FIWARE Global Summit - FIWARE Context Information ManagementFIWARE Global Summit - FIWARE Context Information Management
FIWARE Global Summit - FIWARE Context Information Management
 
LOD2 Webinar: SIREn
LOD2 Webinar: SIREnLOD2 Webinar: SIREn
LOD2 Webinar: SIREn
 
JSON, A Splash of SODA, and a SQL Chaser: Real-World Use Cases for Autonomous...
JSON, A Splash of SODA, and a SQL Chaser: Real-World Use Cases for Autonomous...JSON, A Splash of SODA, and a SQL Chaser: Real-World Use Cases for Autonomous...
JSON, A Splash of SODA, and a SQL Chaser: Real-World Use Cases for Autonomous...
 
Rage Against the Framework
Rage Against the FrameworkRage Against the Framework
Rage Against the Framework
 
(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...
(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...
(BDT401) Big Data Orchestra - Harmony within Data Analysis Tools | AWS re:Inv...
 
Webinar: What's New in Solr 6
Webinar: What's New in Solr 6Webinar: What's New in Solr 6
Webinar: What's New in Solr 6
 
Matching Dirty Data
Matching Dirty DataMatching Dirty Data
Matching Dirty Data
 

Recently uploaded

GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 

Recently uploaded (20)

GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 

Enonic Content Repository built on elasticsearch

  • 3.
  • 4. Storing data • Git • Java Content Repository • Elasticsearch
  • 5. content repository _id = 1001 _name = ‘OSLO’ _parent = ROOT displayName = ‘Oslo’ data.population = 647676 data.area = 454.03 _id = 1001 _name = ‘oslo’ _parent = ROOT displayName = ‘Oslo’ data.population = 647676 data.area = 454.03 location = geoPoint(’59.9127300,10.7460900’) _ID = 1041 _name = ‘elasticon’ _parent = ‘4021’ category = 'conference' displayName = ‘elasticon' keywords = ['ELK', elasticsearch’] location = ref(2) description = ‘largest gathering of ELK expertise in the world’ content repository _id = 13 _name = ‘opera.png’ _parent = ‘1001 size = 70056 height = 360 _id = 4021 _name = ‘sf’ _parent = ROOT displayName = ‘San Francisco’ data.population = 837442 data.area = 600.6
  • 6. repositories AccessControl AccessControl AccessControl Staging support Staging support Staging support Versioning Versioning Versioning Search Search Search myDataRepo myUserRepo myStuffRepo
  • 7. node versions BlobStore _id = 1001 displayName = ‘Oslo’ data.population = 647676 data.area = 454.03 location = geoPoint(’59.9127300,10.7460900’) _id = 13 size = 70056 height = 360 width = 1024 _id = 1001 displayName = ‘Oslo’ data.population = 647676 data.area = 454.03 _id = 1041 category = 'conference' displayName = ‘elasticon' keywords = ['ELK', elasticsearch’] location = ref(2) description = ‘largest gathering of ELK expertise in the world’ _id = 4021 displayName = ‘San Francisco’ data.population = 837442 data.area = 600.6
  • 8. branch _id = 2 _version = 1 type = ‘city’ displayName = ‘San Francisco’ data.population = 837442 … _id = 1431-1240-1231-1234 _version = 1 category = 'conference' name = 'Elasticon' keywords = ['ELK', elasticsearch’] …
 _id = 1234-1234-1234-1234 _version = 1 displayName = ‘Oslo’ data.population = 647676 … _id = 1234-1234-1234-1234 _version = 2 displayName = ‘Oslo’ data.population = 647676 location = geoPoint(’59.9127300,10.7460900’)/ _id = 1010 _version = 1 size = 70056 height = 360 … /oslo /oslo/opera.png /sf /sf/elasticon branch: master
  • 9. branch _id = 2 _version = 1 type = ‘city’ displayName = ‘San Francisco’ data.population = 837442 … _id = 1431-1240-1231-1234 _version = 1 category = 'conference' name = 'Elasticon' keywords = ['ELK', elasticsearch’] …
 _id = 1234-1234-1234-1234 _version = 1 displayName = ‘Oslo’ data.population = 647676 … branch: master / /oslo branch: myDrafts _id = 1234-1234-1234-1234 _version = 2 displayName = ‘Oslo’ data.population = 647676 location = geoPoint(’59.9127300,10.7460900’)/ _id = 1010 _version = 1 size = 70056 height = 360 … /oslo /oslo/opera.png /sf /sf/elasticon /sf /elasticon
  • 10. branch: push _id = 2 _version = 1 type = ‘city’ displayName = ‘San Francisco’ data.population = 837442 … _id = 1431-1240-1231-1234 _version = 1 category = 'conference' name = 'Elasticon' keywords = ['ELK', elasticsearch’] …
 _id = 1234-1234-1234-1234 _version = 1 displayName = ‘Oslo’ data.population = 647676 … branch: masterbranch: myDrafts _id = 1234-1234-1234-1234 _version = 2 displayName = ‘Oslo’ data.population = 647676 location = geoPoint(’59.9127300,10.7460900’)/ _id = 1010 _version = 1 size = 70056 height = 360 … /oslo /oslo/opera.png /sf /sf/elasticon / /oslo /oslo/opera.png /sf /sf/elasticon
  • 14. mapping Nodes are schema-less indexField = property-path + value type
  • 15. mapping cont. • myProperty (String) • myProperty._analyzed • myProperty._ngram • myProperty._number • myProperty._geoPoint • myProperty._orderBy
  • 16. string mapping “name": “san-fancisco” “name._orderby": “san-fancisco" name = ‘san-fancisco’
  • 17. text mapping “description": “this is…” “description._fulltext": “this is…” “description._ngram": “this is…" “description._orderby": “this is…" description = ‘this is the description’
  • 18. Numeric mapping “data.area": “600.6” “data.area._number”: 600.6 “data.area._orderby": “dc082c4cccccccccd" data.area = 600.6
  • 19. ES AggregationsES Queries search ES Filters Enonic XP Query-language Enonic XP Search API
  • 20. javascript API execute('content.query', { "count": 100, "start": 0, "query": "fulltext('myField', 'searching for cheese', 'AND')", "filter": “type=‘article’", "aggregations": { "genders": { "terms": { "field": "gender", "order": "_count asc", "size": 2 } } } });
  • 21. query-language title LIKE ‘elast*’ OR category IN (‘conference’, ‘event’) ORDER BY title ASC
  • 22. query-language { "from" : 0, "size" : 10, "query" : { "filtered" : { "query" : { "bool" : { "should" : [ { "wildcard" : { "title" : { "wildcard" : “elast*” } } }, { "bool" : { "should" : [ { "term" : { "category" : "conference" } }, { "term" : { “category" : “event" } } ] } } ] } }, "filter" : { "terms" : { "_permissions.read" : [ "role:system.authenticated", "user:system:test-user" ] } } } }, "sort" : [ { "title._orderby" : { "order" : "asc", "ignore_unmapped" : true } } ] }
  • 23. query-language category = ‘conference’ AND ngram(‘description’, ‘elast elk’, ‘OR’)
  • 24. query-language { "from" : 0, "size" : 10, "query" : { "filtered" : { "query" : { "bool" : { "must" : [ { "term" : { "category" : "conference" } }, { "simple_query_string" : { "query" : "elast elk", "fields" : [ "description._ngram" ], "default_operator" : "or" } } ] } }, "filter" : { "terms" : { "_permissions.read" : [ "role:system.authenticated", "user:system:test-user" ] } } } } }
  • 25. security • _permissions.create • _permissions.delete • _permissions.modify • _permissions.publish • _permissions.read • _permissions.readpermissions • _permissions.writepermissions
  • 26. security filter "filter" : { "terms" : { "_permissions.read" : [ "role:system.authenticated", "user:system:test-user" "group:system:my-group" ] } }