title: How can I improve elasticsearch site search experience?
body: <p>I have at least a thousand documents and more will be coming containing title/page content. Think Google like site search. I'm experiencing a lot of noise while enabling fuzziness. At the same time, fuziness will be helpful in addressing user error etc.</p>
  <p>I already have the indexing down, consuming all changes to pages real time.
  I'm doing a bunch of conditional steps for matching and boosting them based on significance.</p>
  <p>Initially we did a poc to convert the page contents into fixed length vectors and use BERT to query which did not have much of an improvement, so right now it's using pure es queries.</p>
  <p>I know there is a lot that goes into searchability in elasticsearch, <strong>Do you happen to have any resources to look into improving site search experience with elasticsearch?</strong> I'm missing major basics/foundations of searchability which I would like to improve on.
  I have gotten a recommendation from another post for <a href="https://www.manning.com/books/relevant-search" rel="nofollow noreferrer">https://www.manning.com/books/relevant-search</a> which I plan to learn from when it is delivered.</p>
  <p>Some things that I'm thinking and proposed by my team lead is to perform dyanamic queries based on the query the user makes. eg. If user searches a name(service to check if it is a name) use a query without fuzziness.</p>
  <pre><code>{
          &quot;query&quot;: {
              &quot;bool&quot;: {
                  &quot;must_not&quot;:{
                      &quot;match&quot;: {
                          &quot;channel&quot;: &quot;techhub&quot;
                      }
                  },
                  &quot;should&quot;: [
                      {
                          &quot;match_phrase&quot;: {
                              &quot;title&quot;: {
                                  &quot;query&quot;: message,
                                  &quot;slop&quot;: 1,
                                  &quot;boost&quot;: 10.0
                              }
                          }
                      },
                      {
                          &quot;match&quot;: {
                              &quot;title&quot;: {
                                  &quot;query&quot;: message,
                                  &quot;fuzziness&quot;: 1,
                                  &quot;minimum_should_match&quot;: &quot;1&lt;30%&quot;,
                                  &quot;boost&quot;: 5.0
                              }
                          }
                      },
                      {
                          &quot;match&quot;: {
                              &quot;title.edge_ngrams&quot;: {
                                  &quot;query&quot;: message,
                                  &quot;fuzziness&quot;: 1,
                                  &quot;minimum_should_match&quot;: &quot;1&lt;30%&quot;,
                                  &quot;boost&quot;: 3.0
                              }
                          }
                      },
                      {
                          &quot;match_phrase&quot;: {
                              &quot;plain_blob&quot;: {
                                  &quot;query&quot;: message,
                                  &quot;slop&quot;: 1,
                                  &quot;boost&quot;: 10.0
                              }
                          }
                      },
                      {
                          &quot;match&quot;: {
                              &quot;plain_blob&quot;: {
                                  &quot;query&quot;: message,
                                  &quot;fuzziness&quot;: 1,
                                  &quot;minimum_should_match&quot;: &quot;1&lt;30%&quot;,
                                  &quot;boost&quot;: 1.5
                              }
                          }
                      },
                      {
                          &quot;match&quot;: {
                              &quot;plain_blob.edge_ngrams&quot;: {
                                  &quot;query&quot;: message,
                                  &quot;fuzziness&quot;: 1,
                                  &quot;minimum_should_match&quot;: &quot;1&lt;30%&quot;,
                                  &quot;boost&quot;: 1.0
                              }
                          }
                      }
                  ],
                  &quot;minimum_should_match&quot;: 1
              }
          },
          &quot;size&quot;: 10,
          &quot;from&quot;: 0
      }
  </code></pre>