2

Hi I am trying to do query on elastic search by following the sql query and I want to implement same logic using Java API

select * from log , web where l.loghost = w.webhost and @datetime between '2016-05-20' AND '2016-05-25' 

log and web are different types, and indices are set to logstash-log-* and logstash-web*, @timestamp format looks like "2016-05-20T17:14:01.037Z"

Now I have the following Java code but i don't know how to set between two dates ,so it does not return expected output

  SearchResponse response = client.prepareSearch("logstash-log-*","logstash-web-*")
   .setTypes("log","web")
  .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
  .setFetchSource(new String[]{"*"}, null)
 .setQuery(QueryBuilders.queryStringQuery("1.2.3.4").field("*_host"))// Query
  .execute()
 .actionGet();

Please guide I am new to Elastic search. Thanks in advance.

1 Answer 1

3

You need to combine a range query with your query_string query inside a bool/filter query:

QueryStringQueryBuilder qs = QueryBuilders.queryStringQuery("1.2.3.4").field("*_host");
RangeQueryBuilder range = QueryBuilders.rangeQuery("@timestamp")
    .gte("2016-05-20T00:00:00.000Z")
    .lte("2016-05-25T00:00:00.000Z");

and then

...
.setQuery(QueryBuilders.boolQuery().filter(qs).filter(range))
...
Sign up to request clarification or add additional context in comments.

4 Comments

from "RangeQueryBuilder range = QueryBuilders.rangeQ......" , i got the error msg "Type mismatch: cannot convert from org.elasticsearch.index.query.RangeQueryBuilder to org.apache.lucene.queryparser.xml.builders.RangeQueryBuilder"
The correct import to use is import org.elasticsearch.index.query.RangeQueryBuilder; not import org.apache.lucene.queryparser.xml.builders.RangeQueryBuilder;
What import statement do you have for QueryBuilders?
I don't get what your problem is. Please explain thoroughly so we can help. Besides, you should not create an answer for that, simply update your question with additional info.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.