JSFiddle - React, Tailwind, and code Playground
by WoJWoJ
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
JavaScript
var text = "hello world priority:high bonjour who:john"
var freetext = []
var searchterms = {}
var query = {}
var tokens = text.split(" ");
_.forEach(tokens, function (token) {
if (_.includes(token, ':')) {
splittoken = token.split(':')
searchterms[splittoken[0]] = splittoken[1]
} else {
freetext.push(token)
}
})
document.write(JSON.stringify(freetext))
document.write(JSON.stringify(searchterms))
_.set(query, 'query.bool.must', [])
// add specific serch terms
_.forEach(searchterms, function(val, key) {
query.query.bool.must.push({"term": {key: val}})
})
// add freetext search
_.forEach(freetext, function(word) {
query.query.bool.must.push({"term": {"_all": word}})
})
document.write(JSON.stringify(query))