Code Monkey home page Code Monkey logo

umbraco.elasticsearch's Introduction

Umbraco.Elasticsearch

Integration of Elasticsearch (v5 only) as a search platform for Umbraco v7.5+

Build status

NuGet

Umbraco.Elasticsearch is an Umbraco plugin designed to integrate your CMS with Elasticsearch. It is not designed to replace any built-in search features of Umbraco (Examine) and instead provides an independent point of search integration in which your CMS acts as a data source for your search index.

Umbraco.Elasticsearch is not an "install and forget" solution, to use it will be expected to have knowledge of the following:

  • Develop custom code and logic within your Umbraco CMS, Umbraco.Elasticsearch is a code centric library
  • How to extract node properties from Umbraco programmatically using IContent, IMedia and the ServiceContext services
  • How to use the NEST Elasticsearch library to:
    • Define indexing document mappings via either the NEST attributes or the IElasticClient
    • Write search queries using the NEST fluent DSL within the Nest-Searchify library wrapper

Installing Umbraco.Elasticsearch does not instantly give you full-text search over your CMS content, you will need to review the sample projects or read the documentation to learn how to get up and running.

Information on the latest release can be found within the github releases.

umbraco.elasticsearch's People

Contributors

philo avatar ste-codes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

umbraco.elasticsearch's Issues

Nodes missed when new index is started

While a new index is being populated, it will miss out any nodes that are created during the population. It will also miss any nodes that are created between the population finishing and the swap of the indexes.

Should "unlive" indexes also receive events to ensure that they are also kept up-to-date?

Media indexing service does not get valid url for node

The method for retrieving a node's url is not consistent across content and media. The default method is to use the NiceUrlProvider, but this only works for content. A workaround until this is fixed is to override the UrlFor() method of the MediaIndexService.

protected override string UrlFor(IMedia contentInstance)
{
  var helper = new UmbracoHelper(UmbracoContext.Current);
  var media = helper.TypedMedia(contentInstance.Id);
  return media.Url();
}

un published items

The package under the hood is using content service, does it index both published and unpublished items?

UmbracoaHelper used as a singleton

I'm not positive, but after quickly looking at some code it seems you might be using UmbracoHelper as a singleton in your IndexService. If your Index service class is request scoped or transient than its usage is fine but otherwise you'll run into problems because the UmbracoContext is a request scoped object which is used to create the helper.

A question about rebuild of indices

Just found out this project and am really excited. I came in a perfect time as I am working on a project with tons of content nodes, a need for geolocation searches, faceted searches, and some advanced lucene features that do not exist on 2.9.4.

Just a quick question - why cant I rebuild the indices once are active? It seems to me that this is a common task I would like to carry out through dev, or when deploying a new feature.

Thanks in advance
Doron

Provide a means to individually index a node

The ability to request and process an indexing request for an individual node by its Id.

  var nodeId = 1234;
  var result = something.Index(nodeId);
  if(!result.Success) {
    // report something
  }

How to set analyser during indexing

Phil,

How do i set an analyser during the index create / indexing process? Nothing is set at the moment and I am guessing the default is keyword. I want to add lowercase filter.

Regards

Ismail

Consider approach to detach plugin from NEST dependency

Investigate whether it is feasible to abstract the NEST dependencies into a facade layer that will allow the core plugin to remove its nuget package dependency on the NEST library.

Doing this will however change the plugin from being an Elasticsearch indexing plugin to a non-descriptive plugin that has hooks for acting on nodes during admin events.

I'm not convinced this is a valid approach as it will introduce the need to provide additional packages to implement the abstracted interfaces.

Leaving issue here for review/discussion.

Issue indexing document when first created

Results in error message:

Search: Unable to index content : 'node name' => value cannt be null. Parameter name: object

Suspect this is related to getting a urlname for the content on first publish, the url is not available at initial publishing and has to be retrieved after the publishing has passed through the cache.

tips on rebuilding on a schedule

Hi Phil,
Not an issue as such more a question. Any tips on setting up scheduled job to rebuild the index? Would we need to create and end point to do it and then call that using umbraco scheduler?

Regards

Ismail

Umbraco version dependency update from 7.3 to 7.5

This is a breaking change and will require alter the requirements on users of this plugin.

Currently the plugin supports Umbraco v7.3+

This upgrade is expected to move that minimum Umbraco version requirement to v7.5+ due to the downlevel dependency graph primarily relating to the use of Json.NET in both Umbraco and NEST.

[0.12.0] "No active index" error when saving and publishing nodes

When hitting the "Save and Publish" button an error message is received stating there is no active index, this is also occuring when there is in fact a valid, active index configured.


This issue is happen due to an active index check that is not executed on Umbraco startup, but only when visiting the index management tab within the developer section.

Workaround

Visit the developer/Elasticsearch tab at least once after Umbraco startup

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.