match查询脚本
match查询:
会对查询条件进行分词。
然后将分词后的查询条件和词条进行等值配置
默认取并集(OR)
语法:
GET 索引名称/_search
{
“query”:{
“match”:{
“字段名称”:“查询条件”{
“query”:“查询条件”,
“operator”:“操作(or或and)”
}}}}
/* matchQuery:词条分词查询 获取并集 与 交集 */
@Test
public void testMatchQuery() throws IOException {
SearchRequest searchRequest = new SearchRequest("goods");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
// 这里是结果词条分词查询 获取并集 与 交集
MatchQueryBuilder query = QueryBuilders.matchQuery("title","华为");
query.operator(Operator.AND);//获取查询数据结果的并集
sourceBuilder.query(query);
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
SearchHits searchHits = searchResponse.getHits();
// 获取记录数
long value = searchHits.getTotalHits().value;
System.out.println("总记录数:"+value);
List<Goods> goodsList = new ArrayList<>();
SearchHit[] hits = searchHits.getHits();
for (SearchHit hit : hits) {
String sourceAsString = hit.getSourceAsString();
// 转为Java
Goods goods = JSON.parseObject(sourceAsString, Goods.class);
goodsList.add(goods);
}
for (Goods goods : goodsList) {
System.out.println(goods);
} }