Giter Site home page Giter Site logo

sdk-go-zincsearch's Introduction

Go Report Card Docs codecov

❗Note: If your use case is of log search (app and security logs) instead of app search (implement search feature in your application or website) then you should check openobserve/openobserve project built in rust that is specifically built for log search use case.

ZincSearch

ZincSearch is a search engine that does full text indexing. It is a lightweight alternative to Elasticsearch and runs using a fraction of the resources. It uses bluge as the underlying indexing library.

It is very simple and easy to operate as opposed to Elasticsearch which requires a couple dozen knobs to understand and tune which you can get up and running in 2 minutes

It is a drop-in replacement for Elasticsearch if you are just ingesting data using APIs and searching using kibana (Kibana is not supported with ZincSearch. ZincSearch provides its own UI).

Check the below video for a quick demo of ZincSearch.

Zinc Youtube

Why ZincSearch

While Elasticsearch is a very good product, it is complex and requires lots of resources and is more than a decade old. I built ZincSearch so it becomes easier for folks to use full text search indexing without doing a lot of work.

Features:

  1. Provides full text indexing capability
  2. Single binary for installation and running. Binaries available under releases for multiple platforms.
  3. Web UI for querying data written in Vue
  4. Compatibility with Elasticsearch APIs for ingestion of data (single record and bulk API)
  5. Out of the box authentication
  6. Schema less - No need to define schema upfront and different documents in the same index can have different fields.
  7. Index storage in disk
  8. aggregation support

Documentation

Documentation is available at https://zincsearch-docs.zinc.dev/

Screenshots

Search screen

Search screen

User management screen

Users screen

Getting started

Quickstart

Check Quickstart

Releases

ZincSearch has hundreds of production installations.

ZincSearch Vs OpenObserve

Feature ZincSearch OpenObserve
Ideal use case App search Logs, metrics, traces (Immutable Data)
Storage Disk Disk, Object (S3), GCS, MinIO, swift and more.
Preferred Use case App search Observability (Logs, metrics, traces)
Max data supported 100s of GBs Petabyte scale
High availability Not available Yes
Open source Yes Yes, OpenObserve
ES API compatibility Yes Yes
GUI Basic Very Advanced, including dashboards
Cost Open source Open source
Get started Open source docs Open source docs or Cloud

Community

Examples

You can use ZincSearch to index and search any data. Here are some examples that folks have created to index and search enron email dataset using zincsearch:

  1. https://github.com/jorgeloaiza48/Enron-Email-DataSet
  2. https://github.com/jhojanperlaza/email_search_engine
  3. https://github.com/carlosarraes/zinmail
  4. https://github.com/devjopa/golab-search
  5. https://github.com/avaco2312/zincsearch
  6. https://github.com/paolorossig/email-indexer

sdk-go-zincsearch's People

Contributors

hengfeiyang avatar marcusramberg avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

sdk-go-zincsearch's Issues

[terms] doesn't support values of type: map[string]interface {}

How to use trem query,
The format required in the sdk is
map[string]map[string]interface{}

// SetTerms gets a reference to the given map[string]map[string]interface{} and assigns it to the Terms field. func (o *MetaQuery) SetTerms(v map[string]map[string]interface{}) { o.Terms = &v }
report error
reason: [terms] doesn't support values of type: map[string]interface {}"}

Check out the zincsearch code
https://github.com/zincsearch/zincsearch/blob/main/pkg/uquery/query/terms.go
The required format is
query map[string]interface{}

how to use ?

Debug body request

Hi guys, Can I get the "Body String Query" which prepared during building query?

Thank you.

aggregations json unmarshal error

cannot unmarshal array into Go struct field MetaAggregationResponse.aggregations.buckets of type map[string]interface {}

// MetaAggregationResponse struct for MetaAggregationResponse
type MetaAggregationResponse struct {
	// slice or map
	Buckets map[string]interface{} `json:"buckets,omitempty"`
	// support for auto_date_histogram_aggregation
	Interval *string `json:"interval,omitempty"`
	Value map[string]interface{} `json:"value,omitempty"`
}

buckets not support slice

func (c *APIClient) decode(v interface{}, b []byte, contentType string) (err error) {
//---
                } else if err = json.Unmarshal(b, v); err != nil { // simple model
			return err
		}
//---

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.