Hi,
[ES VERSION: 1.0.1. Default mappings.]
I have an index which holds the twitter data. The user will have the option
to perform the https://twitter.com/search-advanced in the UI that I'm
building. Upon receiving the search request, I query the index and return
the results. [Source: http://pastebin.com/ep0eBxXY]
I have a couple of questions:
- How do we query complex objects? ie., if i am interested in a field
which is within another object.
Object A
Field in Object A
- Object B
- Field in Object B
-
For me, even the OR, AND and NOT queries doesn't seem to work. Am I
missing anything?if(null!=request.getAllOfTheseWords()){ String[] allWords =
request.getAllOfTheseWords().split(",");
FilterBuilder[] allWordsFilter = new
FilterBuilder[allWords.length];
for(int i=0;i<allWords.length;i++){
String word = allWords[i];
allWordsFilter[i] =
FilterBuilders.termFilter("text", word);
}
srb.setQuery(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
FilterBuilders.andFilter(allWordsFilter)));
}
else if(null!=request.getOrWords()){
String[] orWords = request.getOrWords().split(",");
FilterBuilder[] orFilters = new
FilterBuilder[orWords.length];
for(int i=0;i<orWords.length;i++){
String word = orWords[i];
orFilters[i] = FilterBuilders.termFilter("text",
word);
}
srb.setQuery(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
FilterBuilders.orFilter(orFilters)));
}
else if(null!=request.getNoneOfTheseWords()){
String[] noneOfTheseWords =
request.getNoneOfTheseWords().split(",");
FilterBuilder[] noneOfTheseWordsFilter = new
FilterBuilder[noneOfTheseWords.length];
for(int i=0;i<noneOfTheseWords.length;i++){
String word = noneOfTheseWords[i];
noneOfTheseWordsFilter[i] =
FilterBuilders.termFilter("text", word);
}
srb.setQuery(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
FilterBuilders.notFilter(FilterBuilders.orFilter(noneOfTheseWordsFilter))));
}
else if(null!=request.getHashTags()){
String[] hastags = request.getHashTags().split(",");
FilterBuilder[] hashTagFilter = new
FilterBuilder[hastags.length];
for(int i=0;i<hastags.length;i++){
String hashtag = hastags[i];
hashTagFilter[i] =
FilterBuilders.nestedFilter("hashtag",
FilterBuilders.termFilter("hashtag_text", hashtag));
}
srb.setQuery(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
FilterBuilders.orFilter(hashTagFilter)));
}
else if(null!= request.getFromUser()){
srb.setQuery(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
FilterBuilders.termFilter("screen_name", request.getFromUser())));
}
else if(null!=request.getSince() &&
null!=request.getUntil()){
srb.setQuery(QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
FilterBuilders.rangeFilter("created_at").from(request.getSince()).to(request.getUntil())));
}
}
However this works fine.
http://localhost:9200/twitter/_search?q=hashtag_text:MH192&pretty=true
Please help me out.
Thanks
--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/55f1e4b5-a521-4130-b902-1ce03992402f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.