「名前」:「カイ」「年齢」:「23」「場所」:「デリー、インド」「タグ」:[「検索」、「nosql」]などのフィールドを持つユーザーを持つelasticsearchインデックスがあります.
ユーザーのすべてのフィールドで複数の文字列をクエリしたい (例: ["nosql","delhi"])。Java API を使用することは可能ですか?
ここに私が使用しているコードのサンプルがあります。(しかし、それは質問とは関係ありません) 私が今使っているオブジェクトを知るだけです。
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()
.must(QueryBuilders.matchAllQuery());
if(location!=null) {
queryBuilder.must(QueryBuilders.matchQuery("location",location));
}
BoolFilterBuilder filerBuilder=FilterBuilders.boolFilter();
for(String skill:skills){
filerBuilder.must(FilterBuilders.rangeFilter("tags."+skill).from(0));
}
filerBuilder.must(FilterBuilders.queryFilter(queryBuilder));
if(age!=null) {
filerBuilder.must(FilterBuilders.rangeFilter("age").from(age[0]).to(age[1]));
}
SearchResponse response = client.prepareSearch("skillbin")
.setTypes("stackdump")
.setSearchType(SearchType.QUERY_AND_FETCH)
.setQuery(queryBuilder)
.setPostFilter(filerBuilder)
.addSort("reputation", SortOrder.DESC)
.execute()
.actionGet();
SearchHits hits=response.getHits();
前もって感謝します。:)