def test_ubq_to_dict(): ubq = UpdateByQuery() assert {} == ubq.to_dict() ubq = ubq.query('match', f=42) assert {"query": {"match": {'f': 42}}} == ubq.to_dict() assert {"query": {"match": {'f': 42}}, "size": 10} == ubq.to_dict(size=10) ubq = UpdateByQuery(extra={"size": 5}) assert {"size": 5} == ubq.to_dict()
def test_ubq_to_dict(): ubq = UpdateByQuery() assert {} == ubq.to_dict() ubq = ubq.query("match", f=42) assert {"query": {"match": {"f": 42}}} == ubq.to_dict() assert {"query": {"match": {"f": 42}}, "size": 10} == ubq.to_dict(size=10) ubq = UpdateByQuery(extra={"size": 5}) assert {"size": 5} == ubq.to_dict() ubq = UpdateByQuery(extra={"extra_q": Q("term", category="conference")}) assert {"extra_q": {"term": {"category": "conference"}}} == ubq.to_dict()
def test_overwrite_script(): ubq = UpdateByQuery() ubq = ubq.script( source="ctx._source.likes += params.f", lang="painless", params={"f": 3} ) assert { "script": { "source": "ctx._source.likes += params.f", "lang": "painless", "params": {"f": 3}, } } == ubq.to_dict() ubq = ubq.script(source="ctx._source.likes++") assert {"script": {"source": "ctx._source.likes++"}} == ubq.to_dict()
def test_complex_example(): ubq = UpdateByQuery() ubq = ubq.query('match', title='python') \ .query(~Q('match', title='ruby')) \ .filter(Q('term', category='meetup') | Q('term', category='conference')) \ .script(source='ctx._source.likes += params.f', lang='painless', params={'f': 3}) ubq.query.minimum_should_match = 2 assert { 'query': { 'bool': { 'filter': [ { 'bool': { 'should': [ {'term': {'category': 'meetup'}}, {'term': {'category': 'conference'}} ] } } ], 'must': [ {'match': {'title': 'python'}}], 'must_not': [{'match': {'title': 'ruby'}}], 'minimum_should_match': 2 } }, 'script': { 'source': 'ctx._source.likes += params.f', 'lang': 'painless', 'params': { 'f': 3 } } } == ubq.to_dict()
def test_overwrite_script(): ubq = UpdateByQuery() ubq = ubq.script(source='ctx._source.likes += params.f', lang='painless', params={'f': 3}) assert { 'script': { 'source': 'ctx._source.likes += params.f', 'lang': 'painless', 'params': { 'f': 3 } } } == ubq.to_dict() ubq = ubq.script(source='ctx._source.likes++') assert {'script': {'source': 'ctx._source.likes++'}} == ubq.to_dict()
def test_overwrite_script(): ubq = UpdateByQuery() ubq = ubq.script(source='ctx._source.likes += params.f', lang='painless', params={'f': 3}) assert { 'script': { 'source': 'ctx._source.likes += params.f', 'lang': 'painless', 'params': { 'f': 3 } } } == ubq.to_dict() ubq = ubq.script(source='ctx._source.likes++') assert { 'script': { 'source': 'ctx._source.likes++' } } == ubq.to_dict()
def test_exclude(): ubq = UpdateByQuery() ubq = ubq.exclude("match", title="python") assert { "query": { "bool": { "filter": [{"bool": {"must_not": [{"match": {"title": "python"}}]}}] } } } == ubq.to_dict()
def test_complex_example(): ubq = UpdateByQuery() ubq = (ubq.query("match", title="python").query(~Q("match", title="ruby")).filter( Q("term", category="meetup") | Q("term", category="conference")).script( source="ctx._source.likes += params.f", lang="painless", params={"f": 3})) ubq.query.minimum_should_match = 2 assert { "query": { "bool": { "filter": [{ "bool": { "should": [ { "term": { "category": "meetup" } }, { "term": { "category": "conference" } }, ] } }], "must": [{ "match": { "title": "python" } }], "must_not": [{ "match": { "title": "ruby" } }], "minimum_should_match": 2, } }, "script": { "source": "ctx._source.likes += params.f", "lang": "painless", "params": { "f": 3 }, }, } == ubq.to_dict()
def test_complex_example(): ubq = UpdateByQuery() ubq = ubq.query('match', title='python') \ .query(~Q('match', title='ruby')) \ .filter(Q('term', category='meetup') | Q('term', category='conference')) \ .script(source='ctx._source.likes += params.f', lang='painless', params={'f': 3}) ubq.query.minimum_should_match = 2 assert { 'query': { 'bool': { 'filter': [{ 'bool': { 'should': [{ 'term': { 'category': 'meetup' } }, { 'term': { 'category': 'conference' } }] } }], 'must': [{ 'match': { 'title': 'python' } }], 'must_not': [{ 'match': { 'title': 'ruby' } }], 'minimum_should_match': 2 } }, 'script': { 'source': 'ctx._source.likes += params.f', 'lang': 'painless', 'params': { 'f': 3 } } } == ubq.to_dict()
def test_exclude(): ubq = UpdateByQuery() ubq = ubq.exclude('match', title='python') assert { 'query': { 'bool': { 'filter': [{ 'bool': { 'must_not': [{ 'match': { 'title': 'python' } }] } }] } } } == ubq.to_dict()