我正在用ElasticSearch查询一个字段。该字段可以是“小”、“中”、“平均”、“大”。但我希望“Small”和“Medium”返回“Yes”,“Average”和“Big”返回“No”有没有办法在查询中做到这一点?或者在React式搜索中使用列表组件?谢谢
cigdeys31#
您可以使用script_field
{ "_source": "*", "script_fields": { "custom_field": { "script": { "source": """ if(doc['description.keyword'].value=='Small' || doc['description.keyword'].value=='Medium') return 'Yes'; else return 'No'; """ } } } }
结果
"hits" : [ { "_index" : "index68", "_type" : "_doc", "_id" : "GyEhPYQBJutE-yZceoEO", "_score" : 1.0, "_source" : { "description" : "Small", "title" : "A" }, "fields" : { "custom_field" : [ "Yes" ] } }, { "_index" : "index68", "_type" : "_doc", "_id" : "HCEhPYQBJutE-yZcpoGE", "_score" : 1.0, "_source" : { "description" : "Medium", "title" : "B" }, "fields" : { "custom_field" : [ "Yes" ] } }, { "_index" : "index68", "_type" : "_doc", "_id" : "HSEhPYQBJutE-yZctoHu", "_score" : 1.0, "_source" : { "description" : "Average", "title" : "B" }, "fields" : { "custom_field" : [ "No" ] } }, { "_index" : "index68", "_type" : "_doc", "_id" : "HiEhPYQBJutE-yZc04Fx", "_score" : 1.0, "_source" : { "description" : "Big", "title" : "C" }, "fields" : { "custom_field" : [ "No" ] } } ]
1条答案
按热度按时间cigdeys31#
您可以使用script_field
结果