title: What is the difference between setQuery() and setSource() in elastic SearchRequestBuilder?
body: <p>From looking at people's code, it seems that you can set the query using <code>setSource()</code>/<code>setExtraSource()</code> or <code>setQuery()</code>. </p>
  
  <p>According to documentation:</p>
  
  <pre><code>public SearchRequestBuilder setQuery(String query)
  </code></pre>
  
  <p>Constructs a new search source builder with a raw search query.</p>
  
  <pre><code>public SearchRequestBuilder setSource(String source)
  </code></pre>
  
  <p>Sets the source of the request as a json string. Note, settings anything other than the search type will cause this source to be overridden, consider using <code>setExtraSource(String)</code>.</p>
  
  <p>What is the difference between Query and Source? 
  When do I use each?</p>
  
  <p>Thanks</p>