title: Elasticsearch Query for good title keyword results
body: <p>We have a elasticsearch index containing a catalog of products, that we want to search by title and description.</p>
  
  <p>We want it to have the following constraints:</p>
  
  <ul>
  <li>We are searching title and description for occurences (matches in title should be twice as important as description)</li>
  <li>We want it to have a very light fuzzy search result (but still accurate results)</li>
  <li>Not matching results to the searchterm should not be filtered out, but only shown later (so matching results should be on top and worse results should be at the bottom)</li>
  <li>category_id should filter products out (so no results of other categories should be shown)</li>
  <li>The created_at attribute should be valued very high in sorting as well.
  products should lose score the "older" they get. (This is very important, because they lose importance with every day)</li>
  </ul>
  
  <p>I have tried to create a query like that, but the results are really less than accurate. Sometimes finding completely unrelated stuff. I think that's because of the wildcard query.</p>
  
  <p>Also I think there must be a more elegant solution for the "created_at" scoring. Right?</p>
  
  <p>I am using Elasticsearch 6.2</p>
  
  <p>This is my current code. I would be happy to see an elegant solution for this:</p>
  
  <pre><code>{
    "sort": [
      {
        "_score": {
          "order": "desc"
        }
      }
    ],
    "min_score": 0.3,
    "size": 12,
    "from": 0,
    "query": {
      "bool": {
        "filter": {
          "terms": {
            "category_id": [
              "212",
              "213"
            ]
          }
        },
        "should": [
          {
            "match": {
              "title_completion": {
                "query": "Development",
                "boost": 20
              }
            }
          },
          {
            "wildcard": {
              "title": {
                "value": "*Development*",
                "boost": 1
              }
            }
          },
          {
            "wildcard": {
              "title_completion": {
                "value": "*Development*",
                "boost": 10
              }
            }
          },
          {
            "match": {
              "title": {
                "query": "Development",
                "operator": "and",
                "fuzziness": 1
              }
            }
          },
          {
            "range": {
              "created_at": {
                "gte": 1563264817998,
                "boost": 11
              }
            }
          },
          {
            "range": {
              "created_at": {
                "gte": 1563264040398,
                "boost": 4
              }
            }
          },
          {
            "range": {
              "created_at": {
                "gte": 1563256264398,
                "boost": 1
              }
            }
          }
        ]
      }
    }
  }
  </code></pre>