SlideShare a Scribd company logo
SIMPLE SEARCH WITH
  ELASTIC SEARCH
      MARK STORY
       @MARK_STORY
WAT?
Java based
Lucene powered
JSON driven
Document orientated database
All out super search solution
Easy to setup, and use
INDEXES AND TYPES
            INDEXES
   Similar concept to databases.
   Contain multiple types.
TYPES
Similar concept to tables.
Defines datatypes and indexing rules.
DOCUMENT BASED REST API
     Simple to use and easy to understand.
CREATE A DOCUMENT
cr -PS lclot90/otcspol - '
 ul XOT oahs:20cnat/epe d {
  "ae:"akSoy,
   nm" Mr tr"
  "mi" "akmr-tr.o"
   eal: mr@aksoycm,
  "wte" "mr_tr"
   titr: @aksoy,
  "onr" "aaa,
   cuty: Cnd"
  "as:[ckpp,"aeet,"aaa]
   tg" "aeh" ckfs" cnd"
}'

#Rsos:
  epne
{o"tu,
 "k:re
"idx:cnat"
 _ne""otcs,
"tp""epe,
 _ye:pol"
"i""iMaiBDAWs5g,
 _d:9zCSQq1J8i7"
"vrin:}
 _eso"1
READ IT BACK
cr -GTlclot90/otcspol/i?rtytu
 ul XE oahs:20cnat/epe$dpet=re

#Rsos:
   epne
{_ne""otcs,
 "idx:cnat"
"tp""epe,
 _ye:pol"
"i""iMaiBDAWs5g,
 _d:9zCSQq1J8i7"
"vrin:,
 _eso"1
"xss:re
 eit"tu,
"suc":{
 _ore
  "ae:"akSoy,
   nm" Mr tr"
  "mi" "akmr-tr.o"
   eal: mr@aksoycm,
  "wte" "mr_tr"
   titr: @aksoy,
  "onr" "aaa,
   cuty: Cnd"
  "as:[ckpp,"aeet,"aaa]
   tg" "aeh" ckfs" cnd"
}}
DELETE IT!
cr -DLT lclot90/otcspol/i
 ul XEEE oahs:20cnat/epe$d

#Rsos:
  epne
{o"tu,
 "k:re
"on"tu,
 fud:re
"idx:cnat"
 _ne""otcs,
"tp""epe,
 _ye:pol"
"i""iMaiBDAWs5g,
 _d:9zCSQq1J8i7"
"vrin:}
 _eso"2
SIMPLE SEARCH!
               More on search to come




cr -GTlclot90/otcspol/sac?=akpet=re
 ul XE oahs:20cnat/epe_erhqMr&rtytu
#Rsos:
   epne
{to"1,
 "ok:4
"ie_u"fle
 tmdot:as,
"sad"{
 _hrs:
  "oa"5
   ttl:,
  "ucsfl:,
   scesu"5
  "ald:
   fie"0
},
"is:
 ht"{
  "oa"1
   ttl:,
  "a_cr"01746,
   mxsoe:.1424
  "is:
   ht"[
    {_ne""otcs,
    "idx:cnat"
     "tp""epe,
      _ye:pol"
     "i""llMTWqMZUlw,
      _d:sJyBSaAfU-D"
     "soe:.1424
      _cr"01746,
     "suc":{
      _ore
       "ae:"akSoy,
        nm" Mr tr"
       "mi" "akmr-tr.o"
        eal: mr@aksoycm,
       "wte" "mr_tr"
        titr: @aksoy,
       "onr" "aaa,
        cuty: Cnd"
       "as:[ckpp,"aeet,"aaa]
        tg" "aeh" ckfs" cnd"
     }
    }
  ]
}}
THIS ALL SOUNDS TOO
 BADASS TO BE TRUE
DOCUMENT "DATABASE" IS A
      BIT LIMITED
     Partial updates are doable but painful
     No joins
     No map reduce
     Cannot replace all other datasources
BUT SEARCH IS AMAZZZING
SEARCH BETWEEN TYPES &
       INDEXES
                Search multiple types
cr -GTlclot90/otcspol,opne/sac?=aeMr
 ul XE oahs:20cnat/epecmais_erhqnm:ak


        Search multiple indexes in your cluster
cr -GTlclot90/alpol/sac?=aeMr
 ul XE oahs:20_l/epe_erhqnm:ak
FANCY SEARCH OPTIONS
SEARCH WITH TEXT
       EXPRESSIONS
cr -GTlclot90/otcspol/sac?rtytu - '
 ul XE oahs:20cnat/epe_erhpet=re d {
  "ur" {
   qey:
    "ur_tig:{
     qeysrn"
      "ur" "akO wlo"
       qey: mr R edn
    }
  }
}'
HIGHLIGHT SEARCH
             KEYWORDS
Wrap search terms in highlighting text/markup/html. Great for larger
            documents, as you can extract fragments.
cr -GTlclot90/otcspol/sac?rtytu - '
 ul XE oahs:20cnat/epe_erhpet=re d {
   "ur" {
    qey:
      "et:{
       tx"
         "mi" "ak
          eal: mr"
      }
   },
   "ihih" {
    hglgt:
      "ils:{
       fed"
         "mi" {,
          eal: }
         "ae:{
          nm" }
      }
   }
}'
FACETS
Facets provide aggregated data about a query. You can use this data
          to create drill down search, or histogram data.
         Term counts.
         Custom script values.
         Ranges - like price ranges.
         Geo distance facets - aggregate results by distance.
cr -GTlclot90/otcspol/sac?rtytu - '
 ul XE oahs:20cnat/epe_erhpet=re d {
   "ur" {
    qey:
      "ur_tig:{
       qeysrn"
         "ur" ".o"
          qey: *cm
      }
   },
   "aes:{
    fct"
      "agd:{trs:{fed:"as}}
       tge" "em"   "il" tg"
   }
}'
KNOBS & BUTTONS
MAPPINGS
Allows fine-grained searching later on, and lets you configure
custom mappings.
Control the data types, and indexing used for JSON document
types.
Disable indexing on specific fields.
Configure custom analyzers. For example, non-english stemming.
AVAILABLE MAPPING TYPES
string, integer, float, boolean, null
object - Standard type for nested objects. Allows
Arrays are automatically handled as the above.
properties to be defined.
multi_field - Allows a field to be handled multiple ways with different
aliases.
nested - Indexes sub objects, and works with nested filter/queries.
ip - For ipv4 data.
geo_point - For lat/lon values. Enables piles of search options.
attachment - Store a blob. Can index many text based documents
like PDF.
CREATE A MAPPING
cr -PTlclot90/otcspol/mpig- '
 ul XU    oahs:20cnat/epe_apn d {
  "epe:{
   pol"
    "rpris:{
     poete"
      "ae:{tp" "tig}
       nm" "ye: srn",
      "mi" {tp" "tig}
       eal: "ye: srn",
      "wte" {tp" "tig}
       titr: "ye: srn",
      "onr" {tp" "tig}
       cuty: "ye: srn",
      "as:{tp" "tig}
       tg" "ye: srn"
    }
  }
}'
DEFINE THE ANALYZER USED
When defining a field you can use a a y e i d x a a y e ,
                                    nlzr ne_nlzr
and s a c _ n l z r customize the way data is stored, and or
     e r h a a y e to
searched.
You can also disable analyzing for specific fields.
DISABLE INDEXING
{
    "ae:{
     nm"
      "ye:"tig,
       tp" srn"
      "ne" "o_nlzd,
       idx: ntaaye"
    },
    "oe:{
     nn"
      "ye:"nee"
       tp" itgr,
      "ne" "o
       idx: n"
    }
}
SHARDS & REPLICAS
                              SHARDS
    Define how many nodes you want to split your data across.
       If a node goes down, you still have some of your data.
        You can use routing to control how data is sharded.
More shards improves indexing performance, as work is distributed.
SIMPLE SHARDING
SHARD OVER MULTIPLE NODES
REPLICAS
          Define how many copies of your data you want.
    If several nodes go down, you might still have all your data.
More replicas improves search performance and cluster availability.
REPLICAS
MULTI-TENANCY
Multi-tenancy is a reasonably common requirement, and there are a
                         few ways to do it.
ONE INDEX PER 'TENANT'
Great for small number of tenants.
Painful for larger number of tenants. As sharding and replicas can
be harder to manage.
cr -GTlclot90/akcnat/sac?rtytu - '
 ul XE oahs:20mr/otcs_erhpet=re d {
  "ur" {
   qey:
    "ur_tig:{
     qeysrn"
      "ur" "ednO js"
       qey: wlo R oe
    }
  }
}'
SPECIAL FILTER CONDITIONS
More error prone as you have to include a filter condition.
Easy to shard and setup replicas.
Easily scales to many tenants. As shards/replicas are shared.
Make sure tenant id is a non-analyzed value.
cr -GTlclot90/conigivie/sac?rtytu - '
 ul XE oahs:20acutn/nocs_erhpet=re d {
  "ur" {
   qey:
    "itrd:{
     flee"
      "itr:{
       fle"
        "em:{acutd:1
         tr" "coni"   }
      },
      "ur" {
       qey:
        "ur_tig:{
         qeysrn"
          "ur" "upewf"
           qey: prl ii
        }
      }
    }
  }
}'
OTHER BATTERIES INCLUDED
        Routing Define how documents are sharded.
  Rivers Pipe data in realtime from sources like RabbitMQ.
             Thrift Talk thirft to ElasticSearch.
INTEGRATION WITH
    CAKEPHP
HTTPSOCKET + JSON_ENCODE()
      Basic, can be hard to use.
      No magic.
ELASTICSEARCH DATASOURCE
          (David Kullman)
 Behavior to auto index on aftersave
 Datasource for searching elasticsearch
 Console app to index models
ELASTICSEARCH PLUGIN
        (Kevin von Zonneveld)
Similar features to the previous plugin
Offers more control on how data is indexed
QUESTIONS?
Simple search with elastic search

More Related Content

What's hot

Elastic Search
Elastic SearchElastic Search
Elastic Search
Navule Rao
 
An Introduction to Elastic Search.
An Introduction to Elastic Search.An Introduction to Elastic Search.
An Introduction to Elastic Search.
Jurriaan Persyn
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
Jason Austin
 
Elasticsearch for Data Analytics
Elasticsearch for Data AnalyticsElasticsearch for Data Analytics
Elasticsearch for Data Analytics
Felipe
 
Elasticsearch presentation 1
Elasticsearch presentation 1Elasticsearch presentation 1
Elasticsearch presentation 1
Maruf Hassan
 
ElasticSearch AJUG 2013
ElasticSearch AJUG 2013ElasticSearch AJUG 2013
ElasticSearch AJUG 2013
Roy Russo
 
Elasticsearch: You know, for search! and more!
Elasticsearch: You know, for search! and more!Elasticsearch: You know, for search! and more!
Elasticsearch: You know, for search! and more!
Philips Kokoh Prasetyo
 
Managing Your Content with Elasticsearch
Managing Your Content with ElasticsearchManaging Your Content with Elasticsearch
Managing Your Content with Elasticsearch
Samantha Quiñones
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
Ruslan Zavacky
 
Elasticsearch Introduction at BigData meetup
Elasticsearch Introduction at BigData meetupElasticsearch Introduction at BigData meetup
Elasticsearch Introduction at BigData meetup
Eric Rodriguez (Hiring in Lex)
 
ElasticSearch - DevNexus Atlanta - 2014
ElasticSearch - DevNexus Atlanta - 2014ElasticSearch - DevNexus Atlanta - 2014
ElasticSearch - DevNexus Atlanta - 2014
Roy Russo
 
Elastic Search
Elastic SearchElastic Search
Elastic Search
Lukas Vlcek
 
Philly PHP: April '17 Elastic Search Introduction by Aditya Bhamidpati
Philly PHP: April '17 Elastic Search Introduction by Aditya BhamidpatiPhilly PHP: April '17 Elastic Search Introduction by Aditya Bhamidpati
Philly PHP: April '17 Elastic Search Introduction by Aditya Bhamidpati
Robert Calcavecchia
 
ElasticSearch in action
ElasticSearch in actionElasticSearch in action
ElasticSearch in action
Codemotion
 
Elasticsearch - DevNexus 2015
Elasticsearch - DevNexus 2015Elasticsearch - DevNexus 2015
Elasticsearch - DevNexus 2015
Roy Russo
 
Cool bonsai cool - an introduction to ElasticSearch
Cool bonsai cool - an introduction to ElasticSearchCool bonsai cool - an introduction to ElasticSearch
Cool bonsai cool - an introduction to ElasticSearch
clintongormley
 
Elastic search apache_solr
Elastic search apache_solrElastic search apache_solr
Elastic search apache_solr
macrochen
 
What I learnt: Elastic search & Kibana : introduction, installtion & configur...
What I learnt: Elastic search & Kibana : introduction, installtion & configur...What I learnt: Elastic search & Kibana : introduction, installtion & configur...
What I learnt: Elastic search & Kibana : introduction, installtion & configur...
Rahul K Chauhan
 
Elasticsearch first-steps
Elasticsearch first-stepsElasticsearch first-steps
Elasticsearch first-steps
Matteo Moci
 
Using elasticsearch with rails
Using elasticsearch with railsUsing elasticsearch with rails
Using elasticsearch with rails
Tom Z Zeng
 

What's hot (20)

Elastic Search
Elastic SearchElastic Search
Elastic Search
 
An Introduction to Elastic Search.
An Introduction to Elastic Search.An Introduction to Elastic Search.
An Introduction to Elastic Search.
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
 
Elasticsearch for Data Analytics
Elasticsearch for Data AnalyticsElasticsearch for Data Analytics
Elasticsearch for Data Analytics
 
Elasticsearch presentation 1
Elasticsearch presentation 1Elasticsearch presentation 1
Elasticsearch presentation 1
 
ElasticSearch AJUG 2013
ElasticSearch AJUG 2013ElasticSearch AJUG 2013
ElasticSearch AJUG 2013
 
Elasticsearch: You know, for search! and more!
Elasticsearch: You know, for search! and more!Elasticsearch: You know, for search! and more!
Elasticsearch: You know, for search! and more!
 
Managing Your Content with Elasticsearch
Managing Your Content with ElasticsearchManaging Your Content with Elasticsearch
Managing Your Content with Elasticsearch
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
 
Elasticsearch Introduction at BigData meetup
Elasticsearch Introduction at BigData meetupElasticsearch Introduction at BigData meetup
Elasticsearch Introduction at BigData meetup
 
ElasticSearch - DevNexus Atlanta - 2014
ElasticSearch - DevNexus Atlanta - 2014ElasticSearch - DevNexus Atlanta - 2014
ElasticSearch - DevNexus Atlanta - 2014
 
Elastic Search
Elastic SearchElastic Search
Elastic Search
 
Philly PHP: April '17 Elastic Search Introduction by Aditya Bhamidpati
Philly PHP: April '17 Elastic Search Introduction by Aditya BhamidpatiPhilly PHP: April '17 Elastic Search Introduction by Aditya Bhamidpati
Philly PHP: April '17 Elastic Search Introduction by Aditya Bhamidpati
 
ElasticSearch in action
ElasticSearch in actionElasticSearch in action
ElasticSearch in action
 
Elasticsearch - DevNexus 2015
Elasticsearch - DevNexus 2015Elasticsearch - DevNexus 2015
Elasticsearch - DevNexus 2015
 
Cool bonsai cool - an introduction to ElasticSearch
Cool bonsai cool - an introduction to ElasticSearchCool bonsai cool - an introduction to ElasticSearch
Cool bonsai cool - an introduction to ElasticSearch
 
Elastic search apache_solr
Elastic search apache_solrElastic search apache_solr
Elastic search apache_solr
 
What I learnt: Elastic search & Kibana : introduction, installtion & configur...
What I learnt: Elastic search & Kibana : introduction, installtion & configur...What I learnt: Elastic search & Kibana : introduction, installtion & configur...
What I learnt: Elastic search & Kibana : introduction, installtion & configur...
 
Elasticsearch first-steps
Elasticsearch first-stepsElasticsearch first-steps
Elasticsearch first-steps
 
Using elasticsearch with rails
Using elasticsearch with railsUsing elasticsearch with rails
Using elasticsearch with rails
 

Similar to Simple search with elastic search

Making your elastic cluster perform - Jettro Coenradie - Codemotion Amsterdam...
Making your elastic cluster perform - Jettro Coenradie - Codemotion Amsterdam...Making your elastic cluster perform - Jettro Coenradie - Codemotion Amsterdam...
Making your elastic cluster perform - Jettro Coenradie - Codemotion Amsterdam...
Codemotion
 
ElasticSearch for .NET Developers
ElasticSearch for .NET DevelopersElasticSearch for .NET Developers
ElasticSearch for .NET Developers
Ben van Mol
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
Andrii Gakhov
 
Making Mongo realtime - oplog tailing in Meteor
Making Mongo realtime - oplog tailing in MeteorMaking Mongo realtime - oplog tailing in Meteor
Making Mongo realtime - oplog tailing in Meteor
yaliceme
 
Building modern web apps with html5, javascript, and java
Building modern web apps with html5, javascript, and javaBuilding modern web apps with html5, javascript, and java
Building modern web apps with html5, javascript, and java
Alexander Gyoshev
 
D3.js workshop
D3.js workshopD3.js workshop
D3.js workshop
Anton Katunin
 
Peggy elasticsearch應用
Peggy elasticsearch應用Peggy elasticsearch應用
Peggy elasticsearch應用
LearningTech
 
Building and Deploying Application to Apache Mesos
Building and Deploying Application to Apache MesosBuilding and Deploying Application to Apache Mesos
Building and Deploying Application to Apache Mesos
Joe Stein
 
Real-time search in Drupal with Elasticsearch @Moldcamp
Real-time search in Drupal with Elasticsearch @MoldcampReal-time search in Drupal with Elasticsearch @Moldcamp
Real-time search in Drupal with Elasticsearch @Moldcamp
Alexei Gorobets
 
How ElasticSearch lives in my DevOps life
How ElasticSearch lives in my DevOps lifeHow ElasticSearch lives in my DevOps life
How ElasticSearch lives in my DevOps life
琛琳 饶
 
아파트 정보를 이용한 ELK stack 활용 - 오근문
아파트 정보를 이용한 ELK stack 활용 - 오근문아파트 정보를 이용한 ELK stack 활용 - 오근문
아파트 정보를 이용한 ELK stack 활용 - 오근문
NAVER D2
 
JSON in 18c and 19c
JSON in 18c and 19cJSON in 18c and 19c
JSON in 18c and 19c
stewashton
 
Elasticsearch, a distributed search engine with real-time analytics
Elasticsearch, a distributed search engine with real-time analyticsElasticsearch, a distributed search engine with real-time analytics
Elasticsearch, a distributed search engine with real-time analytics
Tiziano Fagni
 
Workshop: Learning Elasticsearch
Workshop: Learning ElasticsearchWorkshop: Learning Elasticsearch
Workshop: Learning Elasticsearch
Anurag Patel
 
Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.
Prajal Kulkarni
 
A Century Of Weather Data - Midwest.io
A Century Of Weather Data - Midwest.ioA Century Of Weather Data - Midwest.io
A Century Of Weather Data - Midwest.io
Randall Hunt
 
Elasticsearch intro output
Elasticsearch intro outputElasticsearch intro output
Elasticsearch intro output
Tom Chen
 
Elasticsearch & "PeopleSearch"
Elasticsearch & "PeopleSearch"Elasticsearch & "PeopleSearch"
Elasticsearch & "PeopleSearch"
George Stathis
 
Attack monitoring using ElasticSearch Logstash and Kibana
Attack monitoring using ElasticSearch Logstash and KibanaAttack monitoring using ElasticSearch Logstash and Kibana
Attack monitoring using ElasticSearch Logstash and Kibana
Prajal Kulkarni
 
Introduction to elasticsearch
Introduction to elasticsearchIntroduction to elasticsearch
Introduction to elasticsearch
Florian Hopf
 

Similar to Simple search with elastic search (20)

Making your elastic cluster perform - Jettro Coenradie - Codemotion Amsterdam...
Making your elastic cluster perform - Jettro Coenradie - Codemotion Amsterdam...Making your elastic cluster perform - Jettro Coenradie - Codemotion Amsterdam...
Making your elastic cluster perform - Jettro Coenradie - Codemotion Amsterdam...
 
ElasticSearch for .NET Developers
ElasticSearch for .NET DevelopersElasticSearch for .NET Developers
ElasticSearch for .NET Developers
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Making Mongo realtime - oplog tailing in Meteor
Making Mongo realtime - oplog tailing in MeteorMaking Mongo realtime - oplog tailing in Meteor
Making Mongo realtime - oplog tailing in Meteor
 
Building modern web apps with html5, javascript, and java
Building modern web apps with html5, javascript, and javaBuilding modern web apps with html5, javascript, and java
Building modern web apps with html5, javascript, and java
 
D3.js workshop
D3.js workshopD3.js workshop
D3.js workshop
 
Peggy elasticsearch應用
Peggy elasticsearch應用Peggy elasticsearch應用
Peggy elasticsearch應用
 
Building and Deploying Application to Apache Mesos
Building and Deploying Application to Apache MesosBuilding and Deploying Application to Apache Mesos
Building and Deploying Application to Apache Mesos
 
Real-time search in Drupal with Elasticsearch @Moldcamp
Real-time search in Drupal with Elasticsearch @MoldcampReal-time search in Drupal with Elasticsearch @Moldcamp
Real-time search in Drupal with Elasticsearch @Moldcamp
 
How ElasticSearch lives in my DevOps life
How ElasticSearch lives in my DevOps lifeHow ElasticSearch lives in my DevOps life
How ElasticSearch lives in my DevOps life
 
아파트 정보를 이용한 ELK stack 활용 - 오근문
아파트 정보를 이용한 ELK stack 활용 - 오근문아파트 정보를 이용한 ELK stack 활용 - 오근문
아파트 정보를 이용한 ELK stack 활용 - 오근문
 
JSON in 18c and 19c
JSON in 18c and 19cJSON in 18c and 19c
JSON in 18c and 19c
 
Elasticsearch, a distributed search engine with real-time analytics
Elasticsearch, a distributed search engine with real-time analyticsElasticsearch, a distributed search engine with real-time analytics
Elasticsearch, a distributed search engine with real-time analytics
 
Workshop: Learning Elasticsearch
Workshop: Learning ElasticsearchWorkshop: Learning Elasticsearch
Workshop: Learning Elasticsearch
 
Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.
 
A Century Of Weather Data - Midwest.io
A Century Of Weather Data - Midwest.ioA Century Of Weather Data - Midwest.io
A Century Of Weather Data - Midwest.io
 
Elasticsearch intro output
Elasticsearch intro outputElasticsearch intro output
Elasticsearch intro output
 
Elasticsearch & "PeopleSearch"
Elasticsearch & "PeopleSearch"Elasticsearch & "PeopleSearch"
Elasticsearch & "PeopleSearch"
 
Attack monitoring using ElasticSearch Logstash and Kibana
Attack monitoring using ElasticSearch Logstash and KibanaAttack monitoring using ElasticSearch Logstash and Kibana
Attack monitoring using ElasticSearch Logstash and Kibana
 
Introduction to elasticsearch
Introduction to elasticsearchIntroduction to elasticsearch
Introduction to elasticsearch
 

More from markstory

Dependency injection in CakePHP
Dependency injection in CakePHPDependency injection in CakePHP
Dependency injection in CakePHP
markstory
 
Safer, More Helpful CakePHP
Safer, More Helpful CakePHPSafer, More Helpful CakePHP
Safer, More Helpful CakePHP
markstory
 
CakePHP - The Road Ahead
CakePHP - The Road AheadCakePHP - The Road Ahead
CakePHP - The Road Ahead
markstory
 
Future of HTTP in CakePHP
Future of HTTP in CakePHPFuture of HTTP in CakePHP
Future of HTTP in CakePHP
markstory
 
CakePHP mistakes made 2015
CakePHP mistakes made 2015CakePHP mistakes made 2015
CakePHP mistakes made 2015
markstory
 
New in cakephp3
New in cakephp3New in cakephp3
New in cakephp3
markstory
 
PHP WTF
PHP WTFPHP WTF
PHP WTF
markstory
 
CakePHP 3.0 and beyond
CakePHP 3.0 and beyondCakePHP 3.0 and beyond
CakePHP 3.0 and beyond
markstory
 
CakePHP mistakes made confoo 2015
CakePHP mistakes made confoo 2015CakePHP mistakes made confoo 2015
CakePHP mistakes made confoo 2015
markstory
 
CakePHP mistakes made
CakePHP mistakes madeCakePHP mistakes made
CakePHP mistakes made
markstory
 
Performance and optimization CakeFest 2014
Performance and optimization CakeFest 2014Performance and optimization CakeFest 2014
Performance and optimization CakeFest 2014
markstory
 
Road to CakePHP 3.0
Road to CakePHP 3.0Road to CakePHP 3.0
Road to CakePHP 3.0
markstory
 
Performance and optimization
Performance and optimizationPerformance and optimization
Performance and optimization
markstory
 
OWASP Top 10 2013
OWASP Top 10 2013OWASP Top 10 2013
OWASP Top 10 2013
markstory
 
CakePHP the yum & yuck
CakePHP the yum & yuckCakePHP the yum & yuck
CakePHP the yum & yuck
markstory
 
Introduction to Twig
Introduction to TwigIntroduction to Twig
Introduction to Twig
markstory
 
Owasp top 10
Owasp top 10Owasp top 10
Owasp top 10
markstory
 
Making the most of 2.2
Making the most of 2.2Making the most of 2.2
Making the most of 2.2
markstory
 
Intro to continuous integration
Intro to continuous integration Intro to continuous integration
Intro to continuous integration
markstory
 
Evented applications with RabbitMQ and CakePHP
Evented applications with RabbitMQ and CakePHPEvented applications with RabbitMQ and CakePHP
Evented applications with RabbitMQ and CakePHP
markstory
 

More from markstory (20)

Dependency injection in CakePHP
Dependency injection in CakePHPDependency injection in CakePHP
Dependency injection in CakePHP
 
Safer, More Helpful CakePHP
Safer, More Helpful CakePHPSafer, More Helpful CakePHP
Safer, More Helpful CakePHP
 
CakePHP - The Road Ahead
CakePHP - The Road AheadCakePHP - The Road Ahead
CakePHP - The Road Ahead
 
Future of HTTP in CakePHP
Future of HTTP in CakePHPFuture of HTTP in CakePHP
Future of HTTP in CakePHP
 
CakePHP mistakes made 2015
CakePHP mistakes made 2015CakePHP mistakes made 2015
CakePHP mistakes made 2015
 
New in cakephp3
New in cakephp3New in cakephp3
New in cakephp3
 
PHP WTF
PHP WTFPHP WTF
PHP WTF
 
CakePHP 3.0 and beyond
CakePHP 3.0 and beyondCakePHP 3.0 and beyond
CakePHP 3.0 and beyond
 
CakePHP mistakes made confoo 2015
CakePHP mistakes made confoo 2015CakePHP mistakes made confoo 2015
CakePHP mistakes made confoo 2015
 
CakePHP mistakes made
CakePHP mistakes madeCakePHP mistakes made
CakePHP mistakes made
 
Performance and optimization CakeFest 2014
Performance and optimization CakeFest 2014Performance and optimization CakeFest 2014
Performance and optimization CakeFest 2014
 
Road to CakePHP 3.0
Road to CakePHP 3.0Road to CakePHP 3.0
Road to CakePHP 3.0
 
Performance and optimization
Performance and optimizationPerformance and optimization
Performance and optimization
 
OWASP Top 10 2013
OWASP Top 10 2013OWASP Top 10 2013
OWASP Top 10 2013
 
CakePHP the yum & yuck
CakePHP the yum & yuckCakePHP the yum & yuck
CakePHP the yum & yuck
 
Introduction to Twig
Introduction to TwigIntroduction to Twig
Introduction to Twig
 
Owasp top 10
Owasp top 10Owasp top 10
Owasp top 10
 
Making the most of 2.2
Making the most of 2.2Making the most of 2.2
Making the most of 2.2
 
Intro to continuous integration
Intro to continuous integration Intro to continuous integration
Intro to continuous integration
 
Evented applications with RabbitMQ and CakePHP
Evented applications with RabbitMQ and CakePHPEvented applications with RabbitMQ and CakePHP
Evented applications with RabbitMQ and CakePHP
 

Recently uploaded

Introduction-to-the-IAM-Platform-Implementation-Plan.pptx
Introduction-to-the-IAM-Platform-Implementation-Plan.pptxIntroduction-to-the-IAM-Platform-Implementation-Plan.pptx
Introduction-to-the-IAM-Platform-Implementation-Plan.pptx
313mohammedarshad
 
Vulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive OverviewVulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive Overview
Steven Carlson
 
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
sunilverma7884
 
Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...
Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...
Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...
maigasapphire
 
What's new in android: jetpack compose 2024
What's new in android: jetpack compose 2024What's new in android: jetpack compose 2024
What's new in android: jetpack compose 2024
Toru Wonyoung Choi
 
WhatsApp Spy Online Trackers and Monitoring Apps
WhatsApp Spy Online Trackers and Monitoring AppsWhatsApp Spy Online Trackers and Monitoring Apps
WhatsApp Spy Online Trackers and Monitoring Apps
HackersList
 
Uncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in LibrariesUncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in Libraries
Brian Pichman
 
Vertex AI Agent Builder - GDG Alicante - Julio 2024
Vertex AI Agent Builder - GDG Alicante - Julio 2024Vertex AI Agent Builder - GDG Alicante - Julio 2024
Vertex AI Agent Builder - GDG Alicante - Julio 2024
Nicolás Lopéz
 
(CISOPlatform Summit & SACON 2024) Cyber Insurance & Risk Quantification.pdf
(CISOPlatform Summit & SACON 2024) Cyber Insurance & Risk Quantification.pdf(CISOPlatform Summit & SACON 2024) Cyber Insurance & Risk Quantification.pdf
(CISOPlatform Summit & SACON 2024) Cyber Insurance & Risk Quantification.pdf
Priyanka Aash
 
Acumatica vs. Sage Intacct _Construction_July (1).pptx
Acumatica vs. Sage Intacct _Construction_July (1).pptxAcumatica vs. Sage Intacct _Construction_July (1).pptx
Acumatica vs. Sage Intacct _Construction_July (1).pptx
BrainSell Technologies
 
Using LLM Agents with Llama 3, LangGraph and Milvus
Using LLM Agents with Llama 3, LangGraph and MilvusUsing LLM Agents with Llama 3, LangGraph and Milvus
Using LLM Agents with Llama 3, LangGraph and Milvus
Zilliz
 
The importance of Quality Assurance for ICT Standardization
The importance of Quality Assurance for ICT StandardizationThe importance of Quality Assurance for ICT Standardization
The importance of Quality Assurance for ICT Standardization
Axel Rennoch
 
Mastering OnlyFans Clone App Development: Key Strategies for Success
Mastering OnlyFans Clone App Development: Key Strategies for SuccessMastering OnlyFans Clone App Development: Key Strategies for Success
Mastering OnlyFans Clone App Development: Key Strategies for Success
David Wilson
 
Patch Tuesday de julio
Patch Tuesday de julioPatch Tuesday de julio
Patch Tuesday de julio
Ivanti
 
Semantic-Aware Code Model: Elevating the Future of Software Development
Semantic-Aware Code Model: Elevating the Future of Software DevelopmentSemantic-Aware Code Model: Elevating the Future of Software Development
Semantic-Aware Code Model: Elevating the Future of Software Development
Baishakhi Ray
 
Connector Corner: Leveraging Snowflake Integration for Smarter Decision Making
Connector Corner: Leveraging Snowflake Integration for Smarter Decision MakingConnector Corner: Leveraging Snowflake Integration for Smarter Decision Making
Connector Corner: Leveraging Snowflake Integration for Smarter Decision Making
DianaGray10
 
(CISOPlatform Summit & SACON 2024) Gen AI & Deepfake In Overall Security.pdf
(CISOPlatform Summit & SACON 2024) Gen AI & Deepfake In Overall Security.pdf(CISOPlatform Summit & SACON 2024) Gen AI & Deepfake In Overall Security.pdf
(CISOPlatform Summit & SACON 2024) Gen AI & Deepfake In Overall Security.pdf
Priyanka Aash
 
(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...
(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...
(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...
Priyanka Aash
 
Use Cases & Benefits of RPA in Manufacturing in 2024.pptx
Use Cases & Benefits of RPA in Manufacturing in 2024.pptxUse Cases & Benefits of RPA in Manufacturing in 2024.pptx
Use Cases & Benefits of RPA in Manufacturing in 2024.pptx
SynapseIndia
 
July Patch Tuesday
July Patch TuesdayJuly Patch Tuesday
July Patch Tuesday
Ivanti
 

Recently uploaded (20)

Introduction-to-the-IAM-Platform-Implementation-Plan.pptx
Introduction-to-the-IAM-Platform-Implementation-Plan.pptxIntroduction-to-the-IAM-Platform-Implementation-Plan.pptx
Introduction-to-the-IAM-Platform-Implementation-Plan.pptx
 
Vulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive OverviewVulnerability Management: A Comprehensive Overview
Vulnerability Management: A Comprehensive Overview
 
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
Girls call Kolkata 👀 XXXXXXXXXXX 👀 Rs.9.5 K Cash Payment With Room Delivery
 
Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...
Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...
Girls Call Churchgate 9910780858 Provide Best And Top Girl Service And No1 in...
 
What's new in android: jetpack compose 2024
What's new in android: jetpack compose 2024What's new in android: jetpack compose 2024
What's new in android: jetpack compose 2024
 
WhatsApp Spy Online Trackers and Monitoring Apps
WhatsApp Spy Online Trackers and Monitoring AppsWhatsApp Spy Online Trackers and Monitoring Apps
WhatsApp Spy Online Trackers and Monitoring Apps
 
Uncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in LibrariesUncharted Together- Navigating AI's New Frontiers in Libraries
Uncharted Together- Navigating AI's New Frontiers in Libraries
 
Vertex AI Agent Builder - GDG Alicante - Julio 2024
Vertex AI Agent Builder - GDG Alicante - Julio 2024Vertex AI Agent Builder - GDG Alicante - Julio 2024
Vertex AI Agent Builder - GDG Alicante - Julio 2024
 
(CISOPlatform Summit & SACON 2024) Cyber Insurance & Risk Quantification.pdf
(CISOPlatform Summit & SACON 2024) Cyber Insurance & Risk Quantification.pdf(CISOPlatform Summit & SACON 2024) Cyber Insurance & Risk Quantification.pdf
(CISOPlatform Summit & SACON 2024) Cyber Insurance & Risk Quantification.pdf
 
Acumatica vs. Sage Intacct _Construction_July (1).pptx
Acumatica vs. Sage Intacct _Construction_July (1).pptxAcumatica vs. Sage Intacct _Construction_July (1).pptx
Acumatica vs. Sage Intacct _Construction_July (1).pptx
 
Using LLM Agents with Llama 3, LangGraph and Milvus
Using LLM Agents with Llama 3, LangGraph and MilvusUsing LLM Agents with Llama 3, LangGraph and Milvus
Using LLM Agents with Llama 3, LangGraph and Milvus
 
The importance of Quality Assurance for ICT Standardization
The importance of Quality Assurance for ICT StandardizationThe importance of Quality Assurance for ICT Standardization
The importance of Quality Assurance for ICT Standardization
 
Mastering OnlyFans Clone App Development: Key Strategies for Success
Mastering OnlyFans Clone App Development: Key Strategies for SuccessMastering OnlyFans Clone App Development: Key Strategies for Success
Mastering OnlyFans Clone App Development: Key Strategies for Success
 
Patch Tuesday de julio
Patch Tuesday de julioPatch Tuesday de julio
Patch Tuesday de julio
 
Semantic-Aware Code Model: Elevating the Future of Software Development
Semantic-Aware Code Model: Elevating the Future of Software DevelopmentSemantic-Aware Code Model: Elevating the Future of Software Development
Semantic-Aware Code Model: Elevating the Future of Software Development
 
Connector Corner: Leveraging Snowflake Integration for Smarter Decision Making
Connector Corner: Leveraging Snowflake Integration for Smarter Decision MakingConnector Corner: Leveraging Snowflake Integration for Smarter Decision Making
Connector Corner: Leveraging Snowflake Integration for Smarter Decision Making
 
(CISOPlatform Summit & SACON 2024) Gen AI & Deepfake In Overall Security.pdf
(CISOPlatform Summit & SACON 2024) Gen AI & Deepfake In Overall Security.pdf(CISOPlatform Summit & SACON 2024) Gen AI & Deepfake In Overall Security.pdf
(CISOPlatform Summit & SACON 2024) Gen AI & Deepfake In Overall Security.pdf
 
(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...
(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...
(CISOPlatform Summit & SACON 2024) Orientation by CISO Platform_ Using CISO P...
 
Use Cases & Benefits of RPA in Manufacturing in 2024.pptx
Use Cases & Benefits of RPA in Manufacturing in 2024.pptxUse Cases & Benefits of RPA in Manufacturing in 2024.pptx
Use Cases & Benefits of RPA in Manufacturing in 2024.pptx
 
July Patch Tuesday
July Patch TuesdayJuly Patch Tuesday
July Patch Tuesday
 

Simple search with elastic search

  • 1. SIMPLE SEARCH WITH ELASTIC SEARCH MARK STORY @MARK_STORY
  • 2. WAT? Java based Lucene powered JSON driven Document orientated database All out super search solution Easy to setup, and use
  • 3. INDEXES AND TYPES INDEXES Similar concept to databases. Contain multiple types.
  • 4. TYPES Similar concept to tables. Defines datatypes and indexing rules.
  • 5. DOCUMENT BASED REST API Simple to use and easy to understand.
  • 6. CREATE A DOCUMENT cr -PS lclot90/otcspol - ' ul XOT oahs:20cnat/epe d { "ae:"akSoy, nm" Mr tr" "mi" "akmr-tr.o" eal: mr@aksoycm, "wte" "mr_tr" titr: @aksoy, "onr" "aaa, cuty: Cnd" "as:[ckpp,"aeet,"aaa] tg" "aeh" ckfs" cnd" }' #Rsos: epne {o"tu, "k:re "idx:cnat" _ne""otcs, "tp""epe, _ye:pol" "i""iMaiBDAWs5g, _d:9zCSQq1J8i7" "vrin:} _eso"1
  • 7. READ IT BACK cr -GTlclot90/otcspol/i?rtytu ul XE oahs:20cnat/epe$dpet=re #Rsos: epne {_ne""otcs, "idx:cnat" "tp""epe, _ye:pol" "i""iMaiBDAWs5g, _d:9zCSQq1J8i7" "vrin:, _eso"1 "xss:re eit"tu, "suc":{ _ore "ae:"akSoy, nm" Mr tr" "mi" "akmr-tr.o" eal: mr@aksoycm, "wte" "mr_tr" titr: @aksoy, "onr" "aaa, cuty: Cnd" "as:[ckpp,"aeet,"aaa] tg" "aeh" ckfs" cnd" }}
  • 8. DELETE IT! cr -DLT lclot90/otcspol/i ul XEEE oahs:20cnat/epe$d #Rsos: epne {o"tu, "k:re "on"tu, fud:re "idx:cnat" _ne""otcs, "tp""epe, _ye:pol" "i""iMaiBDAWs5g, _d:9zCSQq1J8i7" "vrin:} _eso"2
  • 9. SIMPLE SEARCH! More on search to come cr -GTlclot90/otcspol/sac?=akpet=re ul XE oahs:20cnat/epe_erhqMr&rtytu
  • 10. #Rsos: epne {to"1, "ok:4 "ie_u"fle tmdot:as, "sad"{ _hrs: "oa"5 ttl:, "ucsfl:, scesu"5 "ald: fie"0 }, "is: ht"{ "oa"1 ttl:, "a_cr"01746, mxsoe:.1424 "is: ht"[ {_ne""otcs, "idx:cnat" "tp""epe, _ye:pol" "i""llMTWqMZUlw, _d:sJyBSaAfU-D" "soe:.1424 _cr"01746, "suc":{ _ore "ae:"akSoy, nm" Mr tr" "mi" "akmr-tr.o" eal: mr@aksoycm, "wte" "mr_tr" titr: @aksoy, "onr" "aaa, cuty: Cnd" "as:[ckpp,"aeet,"aaa] tg" "aeh" ckfs" cnd" } } ] }}
  • 11. THIS ALL SOUNDS TOO BADASS TO BE TRUE
  • 12. DOCUMENT "DATABASE" IS A BIT LIMITED Partial updates are doable but painful No joins No map reduce Cannot replace all other datasources
  • 13. BUT SEARCH IS AMAZZZING
  • 14. SEARCH BETWEEN TYPES & INDEXES Search multiple types cr -GTlclot90/otcspol,opne/sac?=aeMr ul XE oahs:20cnat/epecmais_erhqnm:ak Search multiple indexes in your cluster cr -GTlclot90/alpol/sac?=aeMr ul XE oahs:20_l/epe_erhqnm:ak
  • 16. SEARCH WITH TEXT EXPRESSIONS cr -GTlclot90/otcspol/sac?rtytu - ' ul XE oahs:20cnat/epe_erhpet=re d { "ur" { qey: "ur_tig:{ qeysrn" "ur" "akO wlo" qey: mr R edn } } }'
  • 17. HIGHLIGHT SEARCH KEYWORDS Wrap search terms in highlighting text/markup/html. Great for larger documents, as you can extract fragments.
  • 18. cr -GTlclot90/otcspol/sac?rtytu - ' ul XE oahs:20cnat/epe_erhpet=re d { "ur" { qey: "et:{ tx" "mi" "ak eal: mr" } }, "ihih" { hglgt: "ils:{ fed" "mi" {, eal: } "ae:{ nm" } } } }'
  • 19. FACETS Facets provide aggregated data about a query. You can use this data to create drill down search, or histogram data. Term counts. Custom script values. Ranges - like price ranges. Geo distance facets - aggregate results by distance.
  • 20. cr -GTlclot90/otcspol/sac?rtytu - ' ul XE oahs:20cnat/epe_erhpet=re d { "ur" { qey: "ur_tig:{ qeysrn" "ur" ".o" qey: *cm } }, "aes:{ fct" "agd:{trs:{fed:"as}} tge" "em" "il" tg" } }'
  • 22. MAPPINGS Allows fine-grained searching later on, and lets you configure custom mappings. Control the data types, and indexing used for JSON document types. Disable indexing on specific fields. Configure custom analyzers. For example, non-english stemming.
  • 23. AVAILABLE MAPPING TYPES string, integer, float, boolean, null object - Standard type for nested objects. Allows Arrays are automatically handled as the above. properties to be defined.
  • 24. multi_field - Allows a field to be handled multiple ways with different aliases. nested - Indexes sub objects, and works with nested filter/queries. ip - For ipv4 data. geo_point - For lat/lon values. Enables piles of search options. attachment - Store a blob. Can index many text based documents like PDF.
  • 25. CREATE A MAPPING cr -PTlclot90/otcspol/mpig- ' ul XU oahs:20cnat/epe_apn d { "epe:{ pol" "rpris:{ poete" "ae:{tp" "tig} nm" "ye: srn", "mi" {tp" "tig} eal: "ye: srn", "wte" {tp" "tig} titr: "ye: srn", "onr" {tp" "tig} cuty: "ye: srn", "as:{tp" "tig} tg" "ye: srn" } } }'
  • 26. DEFINE THE ANALYZER USED When defining a field you can use a a y e i d x a a y e , nlzr ne_nlzr and s a c _ n l z r customize the way data is stored, and or e r h a a y e to searched. You can also disable analyzing for specific fields.
  • 27. DISABLE INDEXING { "ae:{ nm" "ye:"tig, tp" srn" "ne" "o_nlzd, idx: ntaaye" }, "oe:{ nn" "ye:"nee" tp" itgr, "ne" "o idx: n" } }
  • 28. SHARDS & REPLICAS SHARDS Define how many nodes you want to split your data across. If a node goes down, you still have some of your data. You can use routing to control how data is sharded. More shards improves indexing performance, as work is distributed.
  • 31. REPLICAS Define how many copies of your data you want. If several nodes go down, you might still have all your data. More replicas improves search performance and cluster availability.
  • 33. MULTI-TENANCY Multi-tenancy is a reasonably common requirement, and there are a few ways to do it.
  • 34. ONE INDEX PER 'TENANT' Great for small number of tenants. Painful for larger number of tenants. As sharding and replicas can be harder to manage.
  • 35. cr -GTlclot90/akcnat/sac?rtytu - ' ul XE oahs:20mr/otcs_erhpet=re d { "ur" { qey: "ur_tig:{ qeysrn" "ur" "ednO js" qey: wlo R oe } } }'
  • 36. SPECIAL FILTER CONDITIONS More error prone as you have to include a filter condition. Easy to shard and setup replicas. Easily scales to many tenants. As shards/replicas are shared. Make sure tenant id is a non-analyzed value.
  • 37. cr -GTlclot90/conigivie/sac?rtytu - ' ul XE oahs:20acutn/nocs_erhpet=re d { "ur" { qey: "itrd:{ flee" "itr:{ fle" "em:{acutd:1 tr" "coni" } }, "ur" { qey: "ur_tig:{ qeysrn" "ur" "upewf" qey: prl ii } } } } }'
  • 38. OTHER BATTERIES INCLUDED Routing Define how documents are sharded. Rivers Pipe data in realtime from sources like RabbitMQ. Thrift Talk thirft to ElasticSearch.
  • 39. INTEGRATION WITH CAKEPHP
  • 40. HTTPSOCKET + JSON_ENCODE() Basic, can be hard to use. No magic.
  • 41. ELASTICSEARCH DATASOURCE (David Kullman) Behavior to auto index on aftersave Datasource for searching elasticsearch Console app to index models
  • 42. ELASTICSEARCH PLUGIN (Kevin von Zonneveld) Similar features to the previous plugin Offers more control on how data is indexed