你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
menzhipeng
赞同来自:
rochy - rochy_he
elasticStack - 90后it大数据男
要回复问题请先登录或注册
4 个回复
menzhipeng
赞同来自:
如果字段中有“方法”二字,则通过关键词“方” 查询不到。
rochy - rochy_he
赞同来自:
如果你希望“方法”在搜索“方”和“法”时都能被搜索到,你可以采用默认的分词器,按字切分
或者你使用通配符匹配搜索等方式
你需要了解 Term Level 以及 Text Level 两种搜索的区别
elasticStack - 90后it大数据男
赞同来自:
2.什么分词器
3.查询的dsl
menzhipeng
赞同来自:
String[] columns = {"articleTitle","articleContent","author"};
try {
SearchResponse searchResponse = null;
SearchRequestBuilder builder = null;
//设置查询
builder = this.transportClient.prepareSearch(index) .setTypes(type) ;
//设置高亮 HighlightBuilder highlightBuilder = new HighlightBuilder().field("*").requireFieldMatch(false); highlightBuilder.preTags("<span class=\"red\">"); highlightBuilder.postTags("</span>"); builder.highlighter(highlightBuilder);
//设置排序 if (!StringUtils.isBlank(searchVo.getSortColumn())) { builder.addSort(searchVo.getSortColumn(), SortOrder.DESC.equals(searchVo.getSort())?SortOrder.DESC:SortOrder.ASC); }
//设置分页 默认第一页 每页十条数据
if(pager.getPage()==0){ pager.setPage(1); } if(pager.getRows()==0){ pager.setRows(20); }
builder.setFrom( (pager.getPage()-1)* pager.getRows() ).setSize(pager.getRows());
//组合查询 //多字段 单key 匹配查询
QueryBuilder multiMatch = QueryBuilders.multiMatchQuery(key, columns);
//匹配articleType
QueryBuilder articleType = QueryBuilders.multiMatchQuery(searchVo.getArticleType(),"articleType"); builder.setQuery(QueryBuilders.boolQuery().must(multiMatch).must(articleType));
//进行查询并响应 searchResponse = builder.get(); if(searchResponse==null) return null;
// 查询的总数(命中数) for(SearchHit hit:searchResponse.getHits()){ Map<String, Object> source = hit.getSource();
//处理高亮片段 Map<String, HighlightField> highlightFields = hit.getHighlightFields(); for(int i=0;i<columns.length;i++){ HighlightField articleTitleField = highlightFields.get(columns[i]); if(articleTitleField!=null){ Text[] fragments = articleTitleField.fragments(); String nameTmp =""; for(Text text:fragments){ nameTmp+=text; }
//将高亮片段组装到结果中去 source.put(columns[i],nameTmp); } } } return searchResponse.getHits().iterator(); }catch (Exception e){ log.error(e); return null; }