"my_product", //"id" =&> "1240", "type" =&>"product", "_source" =&> false,..." />

elasticsearch 在查詢的時候如何返回指定的欄位值?

如題


$p = array(

"index" =&> "my_product",

//"id" =&> "1240",

"type" =&>"product",

"_source" =&> false, //是否返回全部資源

"fields" =&> array( // 返回欄位

"pro_name",

"pro_editdate"

)

);

請求es介面時制定fields 即可


查詢語句"query"之前添加"_source"即可。也可以使用"exclude"來指定不返回某些欄位。例如,需要返回a和b欄位

{

"_source": {

"include": [

"a",

"b"

]

},

"query": {

"bool": {

"must": [

{

"term": {

"欄位名": "值"

}

}

]

}

}

}

返回的結果在"_source"中。


如果欄位都返回量也不大的話, 可以用searchResponse.getHits() 得到全部, 然後分別選取各個欄位, 比如下面的代碼:

String lat = searchResponse.getHits().getAt(i).getSource()

.get("latitude").toString();

String lon = searchResponse.getHits().getAt(i).getSource()

.get("longitude").toString();


kibana 裡面可以這樣:

GET als_gthrdb_message_all/_search
{
"_source" : {
"includes" : [
"message_time",
"device_id",
"sender_mobileNo",
"message_content_filter"
],
"excludes" : [ ]
}
}

或者這樣

GET als_gthrdb_message_all/_search
{
"_source": ["message_time", "sender_mobileNo","device_id", "message_content_filter"]
}

對於的java api 是(它對應kibana語句中的第一個)

.setFetchSource(@Nullable String[] include, @Nullable String[] exclude)
eg: .setFetchSource(new String[]{"message_time", "device_id", "sender_mobileNo", "message_content_filter"}, null)


public SearchRequestBuilder setFetchSource(@Nullable String[] includes, @Nullable String[] excludes) {
sourceBuilder().fetchSource(includes, excludes);
return this;
}

看SearchRequestBuilder得這個方法,可以指定欄位,include和exclude


可以用_source來返回指定的欄位


官方答案:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-source-filtering.html


如果source是默認設置的話,可以從默認返回的source中取對應欄位值

沒存source的話,調用API requstBuilder.addField(field)


另外一個問題,如果是aggr再post filter 怎麼做才能只返回post filter的值呢?

也就是只返回json里的某些item?


隨便提一下,查詢如果指定了field,就只能通過結果裡面的filed來獲取內容了,原始的source就不返回了


在查詢時使用fields:

Fields


推薦閱讀:

如何通俗地、不用術語地解釋李彥宏的「超鏈分析」?
如何聚合多個搜索引擎的結果?
如何搜索到曾經在網上見過的圖片?
如何通過簡單的網路搜索獲取一個人的資料信息?
哪個搜索引擎的母親節 doodle 最漂亮?

TAG:搜索 | 搜索引擎 | Elasticsearch |