~jcsackett/charmworld/bac-tag-constraints

« back to all changes in this revision

Viewing changes to docs/working-with-elasticsearch.rst

  • Committer: Tarmac
  • Author(s): Brad Crittenden
  • Date: 2014-04-14 20:07:28 UTC
  • mfrom: (500.1.9 es-missing-data)
  • Revision ID: tarmac-20140414200728-ew38mtkdrsuprcff
Do not index charm annotations in bundles.

Charms in bundles have "annotations" which include information relating to the
widget layout when placed in the GUI ('gui-x' and 'gui-y').  This information
is ancilliary to the actual bundle and should not be searchable.

The presence of such data has also caused operational problems.  In
production, some bundles are not being indexed due to parsing errors of the x
and y coordinates.

An example failure is shown here:
2014-04-11 19:12:30,096 DEBUG [pyelasticsearch][MainThread] got response {u'items': [{u'index': {u'_type': u'bundle', u'_id': u'~charmers/muletrain/wiki', u'error': u'MapperParsingException[failed to parse [data.data.services.mediawiki.annotations.gui-y]]; nested: NumberFormatException[For input string: "-117.5"]; ', u'_index': u'charms-78512'}}], u'took': 4}

Unfortunately, this ingestion failure cannot be reproduced on staging or
locally.  Further, it appears pyelasticsearch is not returning an error in
this situation but is instead silently failing to index the bundle.

To QA the branch, in one window run 'make run'.  In another, ingest some
bundles:

% bin/ingest-queued --prefix="~charmers/charms/bundles"

Afterwards, go to 'localhost:2464' in your browser.  Search for 'bundles' and
see the ones that got ingested.  Next search for 'gui-x' and see no results.

https://codereview.appspot.com/87710043/

R=jcsackett.

Approved by Juju Gui Bot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
==============================================
 
2
Tips On Effectively Working With Elasticsearch
 
3
==============================================
 
4
 
 
5
= Tools =
 
6
 
 
7
ES can be queried on the command-line using a number of tools.  Most common is
 
8
curl.  However httpie gives a nicer output, so most examples here will be used
 
9
with it.  The webops may not have httpie installed, so the curl version will
 
10
be needed if asking them to run queries on production.
 
11
 
 
12
== Installing httpie ==
 
13
 
 
14
        $ sudo pip install httpie
 
15
 
 
16
= Getting indexes =
 
17
 
 
18
        $ http localhost:9200/_aliases
 
19
 
 
20
Assume the response showed 'charm-48885' as the most recent index.  It will be
 
21
used in all following examples.
 
22
 
 
23
= Getting a charm =
 
24
 
 
25
        $ http localhost:9200/charms-48885
 
26
 
 
27
= Getting minimal data for everything =
 
28
 
 
29
        $ http localhost:9200/_search?size=5000 <<< '{"fields":[], "query": {"match_all": {}}}'
 
30
or
 
31
        $ curl localhost:9200/_search?pretty\&size=5000 -d '{"fields":[], "query": {"match_all": {}}}'