ElasticSearch Script Score Using Field Value -



ElasticSearch Script Score Using Field Value -

elasticsearch 1.2.1

i trying query documents using weighted tags.

curl -x set 'http://localhost:9200/test' curl -x set 'http://localhost:9200/test/thing/_mapping' - '{ "thing": { "properties": { "tags": { "type": "nested", "properties": { "name": { "type": "string" }, "weight": { "type": "integer" } } } } }}'

adding document:

curl -x set 'http://localhost:9200/test/thing/1', -d '{ "tags": [ { "name": "a", "weight": 2 } ] }'

now searching documents having tag a , boost score based on weight.

note: run these examples have enable dynamic scripting in elasticsearch: add together script.disable_dynamic: false elasticsearch.yml

curl -x 'http://localhost:9200/test/thing/_search?pretty' -d '{ "query": { "function_score": { "boost_mode": "replace", "query": { "match_all": {} }, "functions": [ { "filter": { "nested": { "path": "tags", "filter": { "term": { "tags.name": "a" } } } }, "script_score": { "script": "doc.weight.value" } } ] } } }'

the document found, expected, score 0. seems if property doc.weight empty.

let's test replacing script doc.weight.empty ? 50 : 100. nail has score of 50 indicating field doc.weight empty. found though, because using non-existant field name (e.g. doc.foobar) gives error.

background: match_all part replaced real query. want utilize tags boost results matching tags before ones not matching tags.

what missing?

elasticsearch

Comments

Popular posts from this blog

php - Android app custom user registration and login with cookie using facebook sdk -

django - Access session in user model .save() -

php - .htaccess Multiple Rewrite Rules / Prioritizing -