java priorityqueue,Elasticsearch的javaAPI之facet,count,delete by query

 2023-11-19 阅读 32 评论 0

摘要:Elasticsearch的javaAPI之count count API允許輕松地執行一個查詢,獲得匹配的數量,可以跨越一個或多個index ,一個或多個type。? import static org.elasticsearch.index.query.xcontent.FilterBuilders.*; import static org.elasticsearch.index.query.xconte

Elasticsearch的javaAPI之count

count API允許輕松地執行一個查詢,獲得匹配的數量,可以跨越一個或多個index ,一個或多個type。?

import static org.elasticsearch.index.query.xcontent.FilterBuilders.*;
import static org.elasticsearch.index.query.xcontent.QueryBuilders.*;CountResponse response = client.prepareCount("test").setQuery(termQuery("_type", "type1")).execute().actionGet();

有關計算操作的更多信息,請查看Rest count docs。

線程操作

The search API允許你設置線程來執行操作,這樣實際姜執行API上執行的是相同的節點上(API上執行一個分配在同一服務器的shard上)。

這里有三種threading modes, The NO_THREADS 模式意味著查詢操作將在calling thread上執行。 SINGLE_THREAD 模式意味著將對local shards執行搜索操作,是在single different thread。THREAD_PER_SHARD 意味著搜索操作將在不同的線程上執行,對于每一個local shard。

默認的模式是 SINGLE_THREAD


Elasticsearch的javaAPI之delete by query

Delete by query API允許基于查詢的基礎上刪除documents,從一個或多個基于index和一個或多個type。 在這里 是一個例子:

import static org.elasticsearch.index.query.FilterBuilders.*;
import static org.elasticsearch.index.query.QueryBuilders.*;DeleteByQueryResponse response = client.prepareDeleteByQuery("test").setQuery(termQuery("_type", "type1")).execute().actionGet();

?

elasticsearch之javaAPI之facets

?

對于facets,Elasticsearch提供了完善的Java API,可以看Facets guide。

使用為facets builders建立的工廠(FacetBuilders)來構建,添加你想計算的某方面在查詢的時候,并將它添加到你的搜索請求:

SearchResponse sr = node.client().prepareSearch().setQuery( /* your query */ ).addFacet( /* add a facet */ ).execute().actionGet();

注意,您可以添加多個facets。 可以看Search java APP獲取詳細信息。

構建facets的請求,使用 FacetBuilders helpers,僅僅是導入它們:

import org.elasticsearch.search.facet.FacetBuilders.*;


facets


terms facet

下面是如何使用term facet(Java API)。

準備facet request

這里是關于如何創建一個facet request:

FacetBuilders.termsFacet("f").field("brand").size(10);

使用facet response

導入facet 類
import org.elasticsearch.search.facet.terms.*;
?
// sr is here your SearchResponse object
TermsFacet f = (TermsFacet) sr.getFacets().facetsAsMap().get("f");f.getTotalCount(); ? ? ?// Total terms doc count
f.getOtherCount(); ? ? ?// Not shown terms doc count
f.getMissingCount(); ? ?// Without term doc count// For each entry
for (TermsFacet.Entry entry : f) {entry.getTerm(); ? ?// Termentry.getCount(); ? // Doc count
}
?
Range facet
下面是如何使用Range facet與Java API。 

準備facet request

這里是關于如何創建一個例子(facet request):

FacetBuilders.rangeFacet("f").field("price") ? ? ? ? // Field to compute on.addUnboundedFrom(3) ? ?// from -infinity to 3 (excluded).addRange(3, 6) ? ? ? ? // from 3 to 6 (excluded).addUnboundedTo(6); ? ? // from 6 to +infinity

Use facet response

Import facet相關類:

import org.elasticsearch.search.facet.range.*;
// sr is here your SearchResponse object
RangeFacet f = (RangeFacet) sr.getFacets().facetsAsMap().get("f");// For each entry
for (RangeFacet.Entry entry : f) {entry.getFrom(); ? ?// Range from requestedentry.getTo(); ? ? ?// Range to requestedentry.getCount(); ? // Doc countentry.getMin(); ? ? // Min valueentry.getMax(); ? ? // Max valueentry.getMean(); ? ?// Meanentry.getTotal(); ? // Sum of values
}

直方圖facet

下面是如何使用 柱狀圖facet(Java API)。

準備facet ?request

這里是關于如何創建一個facet request:

HistogramFacetBuilder facet = FacetBuilders.histogramFacet("f").field("price").interval(1);

使用facet ?response

導入facet相關類:

import org.elasticsearch.search.facet.histogram.*;
// sr is here your SearchResponse object
HistogramFacet f = (HistogramFacet) sr.getFacets().facetsAsMap().get("f");// For each entry
for (HistogramFacet.Entry entry : f) {entry.getKey(); ? ? // Key (X-Axis)entry.getCount(); ? // Doc count (Y-Axis)
}

日期直方圖facet

下面是如何使用日期直方圖facet(Java API)。

準備facet request

這里是關于如何創建一個例子facet request:

?

FacetBuilders.dateHistogramFacet("f").field("date") ? ? ?// Your date field.interval("year"); ?// You can also use "quarter", "month", "week", "day",// "hour" and "minute" or notation like "1.5h" or "2w"

使用facet response

導入facet相關類:

import org.elasticsearch.search.facet.datehistogram.*;
// sr is here your SearchResponse object
DateHistogramFacet f = (DateHistogramFacet) sr.getFacets().facetsAsMap().get("f");// For each entry
for (DateHistogramFacet.Entry entry : f) {entry.getTime(); ? ?// Date in ms since epoch (X-Axis)entry.getCount(); ? // Doc count (Y-Axis)
}

過濾器(not facet filter)

下面是如何使用 facet filter(Java API)。

如果你正在尋找如何應用一個過濾器用于facet,看Java API中的facet filter。

準備facet response

這里是關于如何創建一個例子facet request:

FacetBuilders.filterFacet("f",FilterBuilders.termFilter("brand", "heineken")); ? ?// Your Filter here

看到filters來學習如何使用構建過濾器。

使用facet response

導入相關類:

import org.elasticsearch.search.facet.filter.*;
// sr is here your SearchResponse object
FilterFacet f = (FilterFacet) sr.getFacets().facetsAsMap().get("f");f.getCount(); ? // Number of docs that matched

Query facet

下面是如何使用query facet(Java API)。

準備facet request

這里是關于如何創建一個例子facet request:

FacetBuilders.queryFacet("f",QueryBuilders.matchQuery("brand", "heineken"));
?
導入相關類類: 
import org.elasticsearch.search.facet.query.*;
// sr is here your SearchResponse object
QueryFacet f = (QueryFacet) sr.getFacets().facetsAsMap().get("f");f.getCount(); ? // Number of docs that matched

?

Statistical

下面是如何使用的 統計facet(Java API)。

準備facet request

這里是關于如何創建一個例子:

FacetBuilders.statisticalFacet("f").field("price");

使用facet response

import org.elasticsearch.search.facet.statistical.*;
// sr is here your SearchResponse object
StatisticalFacet f = (StatisticalFacet) sr.getFacets().facetsAsMap().get("f");f.getCount(); ? ? ? ? ? // Doc count
f.getMin(); ? ? ? ? ? ? // Min value
f.getMax(); ? ? ? ? ? ? // Max value
f.getMean(); ? ? ? ? ? ?// Mean
f.getTotal(); ? ? ? ? ? // Sum of values
f.getStdDeviation(); ? ?// Standard Deviation
f.getSumOfSquares(); ? ?// Sum of Squares
f.getVariance(); ? ? ? ?// Variance

?

Terms stats facet

下面是如何使用的 Terms stats facet(Java API)。

這里是關于如何創建一個例子:

FacetBuilders.termsStatsFacet("f").keyField("brand").valueField("price");

使用facet response

導入相關類
import org.elasticsearch.search.facet.termsstats.*;
// sr is here your SearchResponse object
TermsStatsFacet f = (TermsStatsFacet) sr.getFacets().facetsAsMap().get("f");
f.getTotalCount(); ? ? ?// Total terms doc count
f.getOtherCount(); ? ? ?// Not shown terms doc count
f.getMissingCount(); ? ?// Without term doc count// For each entry
for (TermsStatsFacet.Entry entry : f) {entry.getTerm(); ? ? ? ? ? ?// Termentry.getCount(); ? ? ? ? ? // Doc countentry.getMin(); ? ? ? ? ? ? // Min valueentry.getMax(); ? ? ? ? ? ? // Max valueentry.getMean(); ? ? ? ? ? ?// Meanentry.getTotal(); ? ? ? ? ? // Sum of values
}

Geo distance facet

下面是如何使用距離facet(Java API)。

這里是關于如何創建一個例子:

FacetBuilders.geoDistanceFacet("f").field("pin.location") ? ? ? ? ? ? ?// Field containing coordinates we want to compare with.point(40, -70) ? ? ? ? ? ? ? ? ? ? // Point from where we start (0).addUnboundedFrom(10) ? ? ? ? ? ? ? // 0 to 10 km (excluded).addRange(10, 20) ? ? ? ? ? ? ? ? ? // 10 to 20 km (excluded).addRange(20, 100) ? ? ? ? ? ? ? ? ?// 20 to 100 km (excluded).addUnboundedTo(100) ? ? ? ? ? ? ? ?// from 100 km to infinity (and beyond ;-) ).unit(DistanceUnit.KILOMETERS); ? ? // All distances are in kilometers. Can be MILES

使用facet response

import org.elasticsearch.search.facet.geodistance.*;
// sr is here your SearchResponse object
GeoDistanceFacet f = (GeoDistanceFacet) sr.getFacets().facetsAsMap().get("f");// For each entry
for (GeoDistanceFacet.Entry entry : f) {entry.getFrom(); ? ? ? ? ? ?// Distance from requestedentry.getTo(); ? ? ? ? ? ? ?// Distance to requestedentry.getCount(); ? ? ? ? ? // Doc countentry.getMin(); ? ? ? ? ? ? // Min valueentry.getMax(); ? ? ? ? ? ? // Max valueentry.getTotal(); ? ? ? ? ? // Sum of valuesentry.getMean(); ? ? ? ? ? ?// Mean
}
Facet filter(not filter facet)

默認情況下,facet應用與查詢結果集無論過濾器是否存在。

如果你需要計算facet在相同的過濾器或者其他過濾器,您可以添加facet到任何的過濾器,用 AbstractFacetBuilder #facetFilter(FilterBuilder) 方法:

FacetBuilders.termsFacet("f").field("brand") // Your facet.facetFilter( // Your filter hereFilterBuilders.termFilter("colour", "pale"));

例如,您可以重用相同的過濾器創建你的查詢:

// A common filter
FilterBuilder filter = FilterBuilders.termFilter("colour", "pale");TermsFacetBuilder facet = FacetBuilders.termsFacet("f").field("brand").facetFilter(filter); ? ? ? ? ? ? ? ? ? ? ? ? ? // We apply it to the facetSearchResponse sr = node.client().prepareSearch().setQuery(QueryBuilders.matchAllQuery()).setFilter(filter) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// We apply it to the query.addFacet(facet).execute().actionGet();

Scope

默認情況下,facet在查詢結果集中計算。 但是你也可以計算facet的在整個index,無論查詢是什么, 使用global參數:

TermsFacetBuilder facet = FacetBuilders.termsFacet("f").field("brand").global(true);
 
原文:

http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/java-facets.html#_use_facet_response_2

http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/delete-by-query.html

http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/count.html

翻譯欠佳,希望不會對大家造成誤導

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/183425.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息