# How i can search with multi fields use java api?

**URL:** https://discuss.elastic.co/t/how-i-can-search-with-multi-fields-use-java-api/2953
**Category:** Elasticsearch
**Created:** [May 17, 2010, 12:38pm UTC](https://discuss.elastic.co/t/how-i-can-search-with-multi-fields-use-java-api/2953 "2010-05-17T12:38:31Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![1112](https://avatars.discourse-cdn.com/v4/letter/1/ba8739/32.png) [@1112](https://discuss.elastic.co/u/1112)
#### Post date: [May 17, 2010, 12:38pm UTC](https://discuss.elastic.co/t/how-i-can-search-with-multi-fields-use-java-api/2953/1 "2010-05-17T12:38:31Z")

</div>

i'm hope search with multi fields use java api.how i can do it?  
public static void search() {  
Client client = SearchClient.getSearchClient();  
try {  
//String keyword = "超级文件管理器";  
String keyword = "炫丽的白色极光";  
keyword = IKAnalyzer.parse(keyword);  
System.out.println(keyword);  
XContentQueryBuilder xContentQueryBulder =  
QueryBuilders.fieldQuery("name",keyword);  
//XContentQueryBuilder xContentQueryBulder =  
QueryBuilders.termQuery("name",keyword);  
//XContentFilterBuilder.  
XContentQueryBuilder xContentQueryBulder2 =  
QueryBuilders.fieldQuery("resourcetype","3");  
//JsonQueryBuilder jsonQueryBuilder =  
JsonQueryBuilders.fieldQuery();  
//JsonQueryBuilder jsonQueryBuilder =  
JsonQueryBuilders.termQuery("softname", keyword);  
//AtomicReference response = new  
AtomicReference(client.search(searchRequest("resources").searchType(SearchType.DFS\_QUERY\_AND\_FETCH).source(SearchSourceBuilder.searchSource().query(jsonQueryBuilder))).actionGet());  
//SearchResponse response =  
client.search(searchRequest("resources").searchType(SearchType.DFS\_QUERY\_AND\_FETCH).source(SearchSourceBuilder.searchSource().query(jsonQueryBuilder).from(0).size(5))).actionGet();  
SearchResponse response =  
client.search(searchRequest("resources")  
.searchType(SearchType.DFS\_QUERY\_THEN\_FETCH)  
.source(searchSource()  
.query(xContentQueryBulder)  
//.queryParserName("{"field" : { "name" :  
"文件管理" }}")  
//.query(xContentQueryBulder2)  
//.sort("flatid")  
.from(0).size(100).explain(true)  
)  
).actionGet();  
//SearchHit[] hits = response.get().hits().hits();  
SearchHits theHits = response.hits();  
SearchHit[] hits = theHits.hits();  
for(SearchHit hit : hits) {  
String id = hit.id();  
System.out.println("id:" + id + ":" + "source:" +  
hit.sourceAsString());  
}  
System.out.println("====================");  
} catch (Exception e) {  
e.printStackTrace();  
}  
}

in this code.  
XContentQueryBuilder xContentQueryBulder =  
QueryBuilders.fieldQuery("name",keyword);  
i'm hope search annother field together,example:  
XContentQueryBuilder xContentQueryBulder =  
QueryBuilders.fieldQuery("restype","3");

---

<div class="post-metadata">

### Author: ![kimchy](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kimchy/32/44952_2.png) [@kimchy](https://discuss.elastic.co/u/kimchy)
#### Post date: [May 17, 2010, 2:27pm UTC](https://discuss.elastic.co/t/how-i-can-search-with-multi-fields-use-java-api/2953/2 "2010-05-17T14:27:12Z")

</div>

When you want to search on multiple fields, you can wrap them in a boolean  
query (there is a builder for that). Note, the query builders are meant for  
chaining for simpler code usage.

Also note that if you just want to search for some terms / words that can  
exists in different fields, the \_all field allows you to do that simply.

cheers,  
shay.banon

2010/5/17 曹江华 [tujiao.com@gmail.com](mailto:tujiao.com@gmail.com)

> i'm hope search with multi fields use java api.how i can do it?  
> public static void search() {  
> Client client = SearchClient.getSearchClient();  
> try {  
> //String keyword = "超级文件管理器";  
> String keyword = "炫丽的白色极光";  
> keyword = IKAnalyzer.parse(keyword);  
> System.out.println(keyword);  
> XContentQueryBuilder xContentQueryBulder =  
> QueryBuilders.fieldQuery("name",keyword);  
> //XContentQueryBuilder xContentQueryBulder =  
> QueryBuilders.termQuery("name",keyword);  
> //XContentFilterBuilder.  
> XContentQueryBuilder xContentQueryBulder2 =  
> QueryBuilders.fieldQuery("resourcetype","3");  
> //JsonQueryBuilder jsonQueryBuilder =  
> JsonQueryBuilders.fieldQuery();  
> //JsonQueryBuilder jsonQueryBuilder =  
> JsonQueryBuilders.termQuery("softname", keyword);  
> //AtomicReference response = new
> 
> AtomicReference(client.search(searchRequest("resources").searchType(SearchType.DFS\_QUERY\_AND\_FETCH).source(SearchSourceBuilder.searchSource().query(jsonQueryBuilder))).actionGet());  
> //SearchResponse response =
> 
> client.search(searchRequest("resources").searchType(SearchType.DFS\_QUERY\_AND\_FETCH).source(SearchSourceBuilder.searchSource().query(jsonQueryBuilder).from(0).size(5))).actionGet();  
> SearchResponse response =  
> client.search(searchRequest("resources")  
> .searchType(SearchType.DFS\_QUERY\_THEN\_FETCH)  
> .source(searchSource()  
> .query(xContentQueryBulder)  
> //.queryParserName("{"field" : { "name" :  
> "文件管理" }}")  
> //.query(xContentQueryBulder2)  
> //.sort("flatid")  
> .from(0).size(100).explain(true)  
> )  
> ).actionGet();  
> //SearchHit hits = response.get().hits().hits();  
> SearchHits theHits = response.hits();  
> SearchHit hits = theHits.hits();  
> for(SearchHit hit : hits) {  
> String id = hit.id();  
> System.out.println("id:" + id + ":" + "source:" +  
> hit.sourceAsString());  
> }  
> System.out.println("====================");  
> } catch (Exception e) {  
> e.printStackTrace();  
> }  
> }
> 
> in this code.  
> XContentQueryBuilder xContentQueryBulder =  
> QueryBuilders.fieldQuery("name",keyword);  
> i'm hope search annother field together,example:  
> XContentQueryBuilder xContentQueryBulder =  
> QueryBuilders.fieldQuery("restype","3");

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [July 6, 2017, 4:24am UTC](https://discuss.elastic.co/t/how-i-can-search-with-multi-fields-use-java-api/2953/3 "2017-07-06T04:24:03Z")

</div>


