I have already facing same problem
Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name",
"elasticsearch").build();
Client client = new
TransportClient(settings).addTransportAddress(new
InetSocketTransportAddress("192.168.1.16", 9300));
client.admin().indices().prepareRefresh("resume_index").execute().actionGet();
FilterBuilders.andFilter(
FilterBuilders.prefixFilter("keyskil", "asp"),
FilterBuilders.prefixFilter("CurrentLocation", "delhi")
);
AndFilterBuilder queryFilters = FilterBuilders.andFilter();
queryFilters.add(FilterBuilders.prefixFilter("keyskil", "asp"));
queryFilters.add(FilterBuilders.prefixFilter("CurrentLocation",
"n"));
FilterBuilder aggFilter = FilterBuilders.andFilter(queryFilters);
SearchResponse response = client.prepareSearch("resume_index")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
//.setFilter(aggFilter)
//.setQuery(QueryBuilders.termQuery("KeySkills", "red"))
//.setQuery(QueryBuilders.prefixQuery("CurrentLocation","n"))
.setFrom(0)
.setSize(2)
.setExplain(true)
.execute()
.actionGet();
System.out.println(response.toString());
String s=response.toString();
find result:
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 261,
"max_score" : 1.0,
"hits" : [ {
"_shard" : 0,
"_node" : "Gik4Z040QSSzsNRlS9sVew",
"_index" : "resume_index",
"type" : "emls",
"_id" : "<CAFV6cM-pUaUTLFv-uDvTXHvYDHOV61vyQL5WdxAfiGLmBYkcLail.com>",
"_score" : 1.0, "_source" : {"From":"ajay.singh@com","Subject":"Fwd:
check file
parser","Path":"E:\emls\output\ajacom.lalituttam_129.doc","ResumeHeadline":"asp.net
developerhaving 2 year and 5 months experience ","KeySkills":"ASP.Net &
C#.NetWith SQLServer 2005 ","Name":"saris kumar gupta
","TotalExperience":"2 Years, 1 Months ","CTC":"Rs1.45 lacs
","CurrentEmployer":"IAP Company Limited
","CurrentDesignation":"SoftwareProgrammer
","LastEmployer":null,"LastDesignation":null,"CurrentLocation":null,"PreferredLocation":null,"Education":"B.A,
MCA ","Mobile":"7388852980 ","Landline":"91-- ","Recommendations":"Not
Mentioned ","Lastmodifiedon":"14-Mar-2012 "},
"_explanation" : {
"value" : 1.0,
"description" : "ConstantScore(NotDeleted(:)), product of:",
"details" : [ {
"value" : 1.0,
"description" : "boost"
}, {
"value" : 1.0,
"description" : "queryNorm"
} ]
}
}, {............................
but when //.setFilter(aggFilter) comments out then find result
{
"took" : 16,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 0,
"max_score" : null,
"hits" :
}
} please let me know whats the error? I want search on basis of multiple
filed..
On Wednesday, February 1, 2012 3:10:11 PM UTC+5:30, kimchy wrote:
Its probably because the title is analyzed, so its broken down into
(modified) terms, for example, "Person template" will be broken down into
two tokens, "person" and "template". When you use term filter, it only
works on actual tokens. You can have the title not analyzed in the mapping
(or use a multi field mapping that has it both as analyzed and
not_analyzed) and then filter on the not analyzed version of it.
On Wednesday, February 1, 2012 at 2:35 AM, Ariel Mendoza wrote:
Hi Shay,
I am using AndFilterBuilder. Here are the results when setFilter(fb)
is commented-out.
Search 'Person': took 68ms, shards 1:0
hit: 0.220823 test_db1/template/CrmPerson(ver 1)
hit: 0.220823 test_db1/template/CrmCompany(ver 1)
hit: 0.126185 test_db1/Person/W2.7(ver 1)
hit: 0.126185 test_db1/Person/W2.8(ver 1)
hit: 0.126185 test_db1/Person/W2.9(ver 1)
hit: 0.126185 test_db1/Person/W2.10(ver 1)
hit: 0.126185 test_db1/Person/W2.11(ver 1)
hit: 0.126185 test_db1/Person/W2.12(ver 1)
hit: 0.126185 test_db1/Person/W2.13(ver 1)
hit: 0.126185 test_db1/Person/W2.14(ver 1)
{"title":"Person template","desc":"Person template","path":"/
test_db1/template/CrmPerson","version":1},{"title":"Person
template","desc":"Person template","path":"/test_db1/template/
CrmCompany","version":1},{"title":"Steven Boutte","desc":"Contacts
person document containing details of Steven Boutte","path":"/
test_db1/Person/W2.7","version":1},{"title":"Joe
Hunter","desc":"Contacts person document containing details of Joe
Hunter","path":"/test_db1/Person/W2.8","version":1},
{"title":"Joseph Wells","desc":"Contacts person document containing
details of Joseph Wells","path":"/test_db1/Person/W2.9","version":
1},{"title":"Albert Brown","desc":"Contacts person document containing
details of Albert Brown","path":"/test_db1/Person/W2.10","version":
1},{"title":"Mike Rivera","desc":"Contacts person document containing
details of Mike Rivera","path":"/test_db1/Person/W2.11","version":
1},{"title":"Sandra Hohl","desc":"Contacts person document containing
details of Sandra Hohl","path":"/test_db1/Person/W2.12","version":
1},{"title":"Curt Adamski","desc":"Contacts person document c
ontaining details of Curt Adamski","path":"/test_db1/Person/
W2.13","version":1},{"title":"Darlene Quandt","desc":"Contacts person
document containing details of Darlene Quandt","path":"/test_db1/
Person/W2.14","version":1}
From the results above, I would like to filter those with title =
"Person template" or version = 1. But, I fail to do so provided the
codes below:
QueryBuilder qb =
QueryBuilders.queryString("Person");
AndFilterBuilder myFilters =
FilterBuilders.andFilter();
//
myFilters.add(FilterBuilders.termFilter("version", "1"));
myFilters.add(FilterBuilders.termFilter("title", "Person template"));
// QueryBuilder qb =
QueryBuilders.filteredQuery(QueryBuilders.queryString(query),
myFilters);
// QueryBuilder qb =
QueryBuilders.filteredQuery(QueryBuilders.queryString(query),
// FilterBuilders.queryFilter( ... ));
searchResponse = client.prepareSearch(dbName)
.setSearchType(SearchType.QUERY_THEN_FETCH)
.setQuery(qb)
.setFilter(myFilters)
.setVersion(true)
.setFrom(start)
.setSize(size)
// .setExplain(true) // Explain hit score
// .setNoFields() // Do not return
stored fields
.addField("document.title")
.addField("document.desc")
.execute()
.actionGet();
Thanks,
Ariel
On Feb 1, 1:42 am, Shay Banon kim...@gmail.com wrote:
Really hard to help without knowing what filter you use, the data you
index, and how its mapped...
On Tuesday, January 31, 2012 at 11:22 AM, Ariel Mendoza wrote:
I am using Java API for text search. Refer to the codes below, when I
execute it, no record is retrieve though the Filter parameters of
field and value pair I've set are correct, but when I comment-out or
remove the .setFilter(fb), the search works fine. Please let me know
if I'm doing this wrong or are there other approach to achieve my
goal?
searchResponse = client.prepareSearch(dbName)
.setSearchType(SearchType.QUERY_THEN_FETCH)
.setQuery(qb)
.setFilter(fb)
.setVersion(true)
.setFrom(start)
.setSize(size)
// .setExplain(true) // Explain hit score
// .setNoFields() // Do not return
stored fields
.addField("document.title")
.addField("document.desc")
.execute()
.actionGet();
--
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.
For more options, visit https://groups.google.com/groups/opt_out.