我建议您将
article.url字段的映射更改为:
url: { "type": "string", "index": "not_analyzed"}如果不这样做,将使您的字段被分析,并且很难以标准分析器将URL分解为多个标记的方式进行查询。
然后,
query_string可以使用
term查询来查询文档,而不是使用查询。
SearchRequestBuilder requestBuilder = client.prepareSearch("crawlbot").setSearchType(SearchType.DFS_QUERY_THEN_FETCH);BoolQueryBuilder queryBuilder = new BoolQueryBuilder();queryBuilder.must(QueryBuilders.termQuery("article.url", e.getKey().getUrl()));...^ | use a term query instead更新
遵循evaldas的评论(对evaldas表示敬意),最终的想法是创建一个自定义分析器,以确保URL也将小写。
创建索引时,可以在中添加新的分析器
settings,然后将其用作
article.url字段的分析器:
PUT /crawlbot{ "settings": { "analysis": { "analyzer": { "url_analyzer": { "type": "custom", "tokenizer": "keyword", "filter": [ "lowercase" ] } } } }, "mappings": { "article": { "properties": { "article": { "url": { "type": "string", "analyzer": "url_analyzer" } } } } }}


