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))