A. 如何使用elasticsearch java
用2個Map作為傳參,一個是must,一個是should。代碼如下:
//創建查詢
SearchRequestBuildersrb=client.prepareSearch(INDEX);
srb.setTypes(ASK_TYPE);
srb.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
//分頁
srb.setFrom((pageNo-1)*pageSize).setSize(pageSize);
//按時間啟毀皮倒序
SortBuildersortBuilder=SortBuilders.fieldSort("date").order(SortOrder.DESC);
srb.addAggregation(aggregation);//聚合
srb.addSort(sortBuilder);//排序
/**********************主要看這里start*********************************/
if(null!=mustMap&&mustMap.size()>0){
//創建一個查詢
BoolQueryBuilderqueryBuilder=QueryBuilders.boolQuery();
//這里查詢的條件用map傳遞
for(Stringkey:mustMap.keySet()){
queryBuilder.must(QueryBuilders.termQuery(key,mustMap.get(key)));
}
悄差//這里查詢的條件用map傳遞
for(Stringkey:shouldMap.keySet()){
queryBuilder.should(QueryBuilders.termQuery(key,mustMap.get(key)));
}
//查詢
srb.setQuery(queryBuilder);
}
/**********************主要看這里end*********************************/
//請余核求
SearchResponseresponse=srb.get();
//更多看這里:http://www.sojson.com/tag_elasticsearch.html
B. elasticSearch用java查詢問題
你這個查詢用filter、must皆可,推薦filter
Stringindex="indexName";//你的index名稱
Stringtype="my_table";
BoolQueryBuilderboolQuery塌野=QueryBuilders.boolQuery();
//boolQuery.must(QueryBuilders.termQuery("a",1));
//boolQuery.must(QueryBuilders.termsQuery("b",2,3));
boolQuery.filter(QueryBuilders.termQuery("a",1));
boolQuery.filter(QueryBuilders.termsQuery("b",2,3));
SearchResponsesearchResponse=client.prepareSearch(index).setTypes(type)
隱備.setQuery(boolQuery)
.addSort("c",SortOrder.ASC)
.addSort("d",SortOrder.ASC)
.storedFields("c","d")
灶衫毀.get();
C. java查詢elasticsearch 有哪些索引
java查詢elasticsearch 有哪些索引
次查詢可分為下面四個步驟:
1.創建連接ElasticSearch服務的client.
索引在ElasticSearch伺服器上,進行索引的查詢首先要和伺服器創建連接,這是第一步。
<code>Client client = TransportClient.builder().build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
</code>
2.創建QueryBuilder.
QueryBuilder可以設置單個欄位的查詢,也可以設置多個欄位的查詢.
e.g.1: 查詢title欄位中包含hibernate關鍵字的文檔:
<code>QueryBuilder qb1 = termQuery("title", "hibernate");
</code>
e.g.2: 查詢title欄位或content欄位中包含git關鍵字的文檔:
<code>QueryBuilder qb2= QueryBuilders.multiMatchQuery("git", "title","content");
</code>
3.執行查詢
通過client設置查詢的index、type、query.返回一個SearchResponse對象:
<code>SearchResponse response = client.prepareSearch("blog").setTypes("article").setQuery(qb2).execute()
.actionGet();
</code>
4.處理查詢結果
SearchResponse對象的getHits()方法獲取查詢結果,返回一個SearchHits的集合,遍歷集合獲取查詢的文檔信息:
?
1
2
<code>SearchHits hits = response.getHits();
</code>
D. elasticSearch Java API 怎麼將查詢出來的數據類似sql 一樣的distinct 去重某個欄位
1、首先要打開SQL的管理工具,選擇一個資料庫喚冊,如下圖所示。
E. elasticsearch 怎樣用java獲得分析器
public class QueryText {
public static void main(String[] args) {
try (Node node = NodeBuilder.nodeBuilder()
.clusterName("net.01")
.client(true).node()) {
//創陵鏈毀建elastic客戶端
Client client = node.client();
//讀取查詢模板喚穗,然後設置參數查詢
try (BufferedReader bodyReader = new BufferedReader(new InputStreamReader(new FileInputStream("D:\common.template"), "utf8"))) {
String line = null;
StringBuilder strBuffer = new StringBuilder();
while ((line = bodyReader.readLine()) != null) {
strBuffer.append(line);
strBuffer.append("\n");
}
Map<String, Object> search_params = new HashMap<>();
search_params.put("from", 1);
search_params.put("size", 5);
search_params.put("key_words", "opencv sift");
QueryBuilder qb = QueryBuilders.templateQuery(strBuffer.toString(), search_params);
SearchResponse sr;
SearchRequestBuilder srb;
srb = client.prepareSearch("blog_v1")
.setTypes("尺備blogpost")
.setQuery(qb);
sr = srb.get();
for (SearchHit hit : sr.getHits().getHits()) {
System.out.println(hit.getSourceAsString());
}
} catch (UnsupportedEncodingException ex) {
} catch (FileNotFoundException ex) {
} catch (IOException ex) {
}
}
}
}
F. 用java代碼怎麼通過ElasticSearch的介面來查詢數據
兩表根據兩個欄位關聯即橘坦可
如喚物 select distinct b.type_name from news a,news_type b where a.news_type_id= b.type_id and a.news_type_id = '1'和伍液
G. java elasticsearch 如何對兩個索引進行關聯查詢
Java API 支持多個index和多個Type同時查詢,但是Elasticsearch是非關系型(NoSQL),所以不能關聯查詢。
H. java SQL查詢elasticsearch
可以添加篩選條件,將 columnName is not null 加在where後
I. java elasticsearch 如何對兩個索引進行關聯查詢
Java API 支持多個index和多個Type同旅遊時查詢,但是Elasticsearch是非關系搜鎮芹型(NoSQL),所以不世畢能關聯查詢。
J. Elasticsearch 查詢表達式
Elasticsearch 是一個開源的搜索引擎,Elasticsearch 使用 Java 編寫的,它的內部使用 Lucene 做索引與搜索,但是它的目的是使全文檢索變得簡單, 通過隱藏 Lucene 的復雜性,取而代之的提供一套簡單一致的 RESTful API。
已經在其他文檔旁脊中詳細介紹,此次僅做簡單步驟介紹
查詢表達式( Query DSL )是一種非常靈活又富有表現力的查詢語言, Elasticsearch 使用它可以以簡單的 JSON 介面來展現 Lucene 功能的絕大部分
上述查詢會搜索ES中的所有索引,但通常只需要去固定一個或幾個索引中搜運穗滲索,搜索全部無疑會造成資源的浪費,在ES中可以通過以下幾種方法來指定索引
以上表示在 mysql-shop_trades-order_statics 索引下查找數據
這里也可以用逗號分割多個匹配索引
ES本身沒有group關鍵詞搜索,但支持聚合查詢,,需要使用關鍵字aggs
order by:注意日期格式和數值格式才支持排序;文本不支持,如果要排序, 需把欄位設置為not analysis
select distinct(id) from table
match_phrase :查詢分析文本,創建片語查詢
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query-phrase.html#query-dsl-match-query-phrase
延族凳伸