Hello,
Interestingly, I am building a new application using a very similar stack
... Play!/MongoDB/Elasticsearch ... I am working on the same problems.
Regarding data model: The items I am storing in my database and indexing
are easily modeled as documents, so I am doing that. I am making no attempt
to normalize them.
Regarding Mongo to ES: I have done some reading on the river, but there are
accounts of memory issues. I do not think it is stable yet. Shay has
mentioned an architecture in another thread in this group (search for
mongodb elasticsearch river), but he did say that it is not implemented and
that it is likely quite a bit of effort. I have a custom application that
processes the data in batches to insert into mongodb. For now I will be
modifying it to also hand the document to ES for indexing. My documents do
not change so this works for me.
Regarding search interface: I don't know of anything out there. I have
built a few search interfaces in the past and I plan to custom build this
one as well with heavy use of jQuery.
Type ahead: I plan to implement this as well, but only for facet values, so
I will have a finite list of values to filter on with my UI controls.
Others have asked how to do this for general search terms based on the
terms in the index, but I have not seen any great solutions yet. Try
searching the group.
Mark
On Sunday, March 4, 2012 9:51:49 AM UTC-8, Michal Karták wrote:
Hi,
first of all thanks Mr. Banon and all of you, who contributing to ES. It
simply rocks !
Since i am new to ES and also to NoSQL world i'd like to ask some
questions about ES and integration with other technologies.
Currently i work on a web application that consists of
0) Play! Framework, as an application framework [0] ,
1) MongoDB, as a persistent datastore [1]
2) PlayMorphia, as an Document-Object mapper [2]
3) Elasticsearch, as a search engine
My goals:
- to implement search-centric application with strong use of faceted
search, typeahead mechanism, cloud ready
- i also like to show facets according to search context ( reduce
information overload of user interface )
- my data set is relatively small, about 5 types of documents / up to
2000 of each type / up to 30 primitive fields per document
Challenges:
0) How to model data in MongoDB and then map then to ES ?
Q1: should i use much more Embedding instead of Referencing =>
index one big (not flat) document ?
Q1: or rather use much more normalized model => index entities
separately (each is flat) ?
1) How to efficiently index Mongodb ?
Possible solutions:
- manually, utilizing Morphia's lifecycle methods. ... costs more
code, but have more controll over the whole process
- using the MongoDB river plugin. ...black box solution, must have
well designed db model and mapping to work well
- Ok, there is also a Play/MongoDB/ES integration module, but it not
works well for me
Q2: Have i left out something ?
2) How to implement front-end faceted search user interface ?
(Im)possible solutions:
- javascript search-oriented ui framework. It not exists, yet :D
(?)
- Elasticsearch's UI framework. It not exists, yet
- use SenseiDB's [4] web console. Integration may not be
possible. I'd like to use ES.
- Ok, the last solution is to have knowledge of ajax/js and write
it for myself.
Q3: Have i left out something ?
3) How to implement typeahead functionality ?
Q4: has somebody experienced Cleo [3] integration with ES ?
Q5: is there ES API to do typeahead ?
Thanks for any helpful info.
Michal
[0] - http://www.playframework.org
[1] - http://www.mongodb.org
[2] - http://www.playframework.org/modules/morphia
[3] - http://sna-projects.com/cleo/
[4] - http://linkedin.github.com/sensei/gettingStarted.html
On Sunday, March 4, 2012 9:51:49 AM UTC-8, Michal Karták wrote:
Hi,
first of all thanks Mr. Banon and all of you, who contributing to ES. It
simply rocks !
Since i am new to ES and also to NoSQL world i'd like to ask some
questions about ES and integration with other technologies.
Currently i work on a web application that consists of
0) Play! Framework, as an application framework [0] ,
1) MongoDB, as a persistent datastore [1]
2) PlayMorphia, as an Document-Object mapper [2]
3) Elasticsearch, as a search engine
My goals:
- to implement search-centric application with strong use of faceted
search, typeahead mechanism, cloud ready
- i also like to show facets according to search context ( reduce
information overload of user interface )
- my data set is relatively small, about 5 types of documents / up to
2000 of each type / up to 30 primitive fields per document
Challenges:
0) How to model data in MongoDB and then map then to ES ?
Q1: should i use much more Embedding instead of Referencing =>
index one big (not flat) document ?
Q1: or rather use much more normalized model => index entities
separately (each is flat) ?
1) How to efficiently index Mongodb ?
Possible solutions:
- manually, utilizing Morphia's lifecycle methods. ... costs more
code, but have more controll over the whole process
- using the MongoDB river plugin. ...black box solution, must have
well designed db model and mapping to work well
- Ok, there is also a Play/MongoDB/ES integration module, but it not
works well for me
Q2: Have i left out something ?
2) How to implement front-end faceted search user interface ?
(Im)possible solutions:
- javascript search-oriented ui framework. It not exists, yet :D
(?)
- Elasticsearch's UI framework. It not exists, yet
- use SenseiDB's [4] web console. Integration may not be
possible. I'd like to use ES.
- Ok, the last solution is to have knowledge of ajax/js and write
it for myself.
Q3: Have i left out something ?
3) How to implement typeahead functionality ?
Q4: has somebody experienced Cleo [3] integration with ES ?
Q5: is there ES API to do typeahead ?
Thanks for any helpful info.
Michal
[0] - http://www.playframework.org
[1] - http://www.mongodb.org
[2] - http://www.playframework.org/modules/morphia
[3] - http://sna-projects.com/cleo/
[4] - http://linkedin.github.com/sensei/gettingStarted.html