Skip to main content

Wukong

Latest Version Travis CI Build Status Coveralls Coverage Status

Wukong offers an ORM query engine for Solr and Solr Cloud.

Installation

	pip install wukong

Usage

Create Solr Collection

Before you use wukong, make sure you already created your collection on SolrCloud. For example,

	curl http://localhost:8080/solr/admin/collections?action=CREATE&name=users&numShards=1&replicationFactor=2

A sample schema can be like:

<fields>
	<uniqueKey>id</uniqueKey>
  	<field name="id" type="int" indexed="true" stored="true" required="true" />
	<field name="name" type="string" indexed="true" stored="true" required="true"/>
	<field name="city" type="string" indexed="true" stored="true"/>
	<field name="age" type="int" indexed="true" stored="true"/>
	...
</fields>

Create a model class for Solr collection

Create a class for your Solr collection by extending the class SolrDoc. For example,

from wukong.models import SolrDoc

class User(SolrDoc):
    collection_name = "users"
    solr_hosts = "localhost:8080,localhost:8081"

    def validate_schema_fields(self, fields):
    	pass

    def get_data_for_solr(self):
    	pass

You can overide existing methods to fit your business logic, like validate_schema_fields, get_data_for_solr.

Use Solr QueryManger

Creat a document

User.documents.create(User_id=12345, name="Test Name", city="Test City")

Update a document

User.documents.update(User_id=12345, name="Test Name")

To index a batch of documentsto your Solr collection, use the container class: SolrDocs. Instead of accessing SOLR multiple times, it only issues one request to SOLR, which is more efficient.

	docs = [
		User(User_id=12345, name="Test Name1", city="Test Cit1"),
		User(User_id=123456, name="Test Name2", city="Test City2")
		...
	]
	docs = SolrDocs(docs)
	docs.index()

Fetch a document

User.documents.get(User_id__eq=12345)

Fetch multiple documents

User.documents.filter(name__eq="Test Name", city__wc="Test*").all()

Use compounded logic

User.documents.filter(OR(city__wc="Test*", name__eq="Test Name"))

Sort by a field

User.documents.sort_by("-name").all()

Force only return a certain fields

User.documents.only("is", "name").all()

Force only return the top 10 documents

User.documents.limit(10).all()

Chain the query methods

User.documents.filter(city__wc="Test*").sort_by("-name").limit(10).all()

Delete a document

User.documents.get(User_id__eq=12345).delete()

Batch delete documents

User.documents.filter(name__eq="Test Name").all().delete()

Documentations

Detailed docs can be found at http://wukong.readthedocs.io/en/latest/

#Release Notes

1.1.0

  • Catch RequestsException Instead Of Connection Errors To Allow For Retries during timeouts (#30)

1.0.1

  • search(): actually send the query_dict in the request body as was intended in 1.0.0 (missed a cherry-pick)

1.0.0

  • Removed support for Python versions < 3.5 and pypy
  • Use POST instead of GET for /select API calls in order to avoid exceeding the max uri length for long queries (#26)

0.5.1

  • Only add /solr/ to the end of a solr url if it isn't already there

0.5.0

  • Simplify the method of making requests, and add logging so it's more visible what's happening (#18)
  • Don't log debugging messages as error messages (#19)
  • Broaden Travis support (#17)
  • Make sure a scheme is always on the solr request (#20)

0.4.0

  • Add ability to update extraparams like omitHeader for solr requests

0.3.1

  • Collection alias support

0.2.2

  • Fix zookeeper cluster state unicode issue

0.2.0

  • Zookeeper states for Solr 6
  • handle situations with unknown Solr hostnames
  • support stats in the query for Solr 6

0.1.1

  • Add support for Python 3.x

0.0.3

  • initial version for wukong

Metadata

Release files for wukong 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wukong 1.1.0
File Size Uploaded
wukong-1.1.0.tar.gz 16.7 kB Details

Release files / wukong-1.1.0.tar.gz

Download URL wukong-1.1.0.tar.gz
Size 16.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f4f9f791767187c5ad9ce9c0fe2796a2336ca93092b0faee874b491c861f98eb
BLAKE2b-256 checksum
How to use checksums
a1e607ee1337fbf5ee3914b94e25d23cf572797429e19f01e2b512b594a13c05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.7.7

Release history Release notifications | RSS feed

This release

1.1.0 This release

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.0

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.2

1 release file

0.2.0

1 release file

0.1.1

1 release file

0.0.3

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page