我已经完成了名称索引。它包含椅子、椅子等数据。
当我尝试用“cha”搜索时,它不会返回任何椅子。这是返回“毛毯”,我期待的文件有椅子。
下面是我的代码:
BoolQueryBuilder rootBoolQuery = new BoolQueryBuilder();
MultiMatchQueryBuilder multiMatchQueryBuilder = multiMatchQuery(searchKey).field(
SEARCH_CATEGORY_NAME_FIELD);
multiMatchQueryBuilder.fuzziness(Fuzziness.TWO);
multiMatchQueryBuilder.type(Type.BEST_FIELDS);
rootBoolQuery.must(multiMatchQueryBuilder);
搜索请求:
{"query":{"bool":{"must":[{"multi_match":{"query":"cha","fields":["categoryname^1.0"],"type":"best_fields","operator":"OR","slop":0,"fuzziness":"2","prefix_length":0,"max_expansions":50,"zero_terms_query":"NONE","auto_generate_synonyms_phrase_query":true,"fuzzy_transpositions":true,"boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}},"sort":[{"productcount":{"order":"desc"}}]}
搜索响应:
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": null,
"hits": [
{
"_index": "category",
"_type": "_doc",
"_id": "331869",
"_score": null,
"_source": {
"rootcategory": "Home",
"categorycode": "Shag_Rugs",
"categoryname": " Shag Rugs",
"categoryid": 331869,
"parentcategory": " Rugs",
"productcount": 59
},
"sort": [
59
]
}
]
}
}
映射:
"categoryname": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
我该怎么解决这个问题?
谢谢,Sri
嗨,您可以将前缀查询用于您的用例,并让我知道它是否解决了您的目的。请点击此处获取更多信息
我使用的是spring数据elasticsearch(4.0版)。现在,我需要将rest高级客户端的搜索结果转换为POJO对象。 我会使用杰克逊图书馆的ObjectMapper。我相信有更好的方法来做到这一点。 Spring data elasticsearch now(4.0版)使用MappingElasticsearchConverter。不幸的是,我不知道如何做到这一点-我没有看到任何相关文
由于已经有很多关于连字符的问题,我已经尝试了以下解决方案: 使用字符筛选器:ElasticSearch-在名称中使用连字符进行搜索。 所以我做了这个映射: 所以char筛选器似乎没有在搜索字符串上执行?我该怎么做才能让它起作用?
我正在使用批量请求执行弹性搜索完整索引。我在索引过程中遇到了一个问题,结果是空的。由于我正在完整索引期间删除索引,因此如何处理这种情况。 我已经完成了以下步骤: 删除索引 创建索引 创建映射 批量请求 索引属性和映射: } 我有大约7.5万份文件。 谢谢,Sree。
我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!
我需要对以搜索词开头的搜索结果进行优先级排序。我用了“匹配短语前缀”。我用了“匹配短语前缀”。但它不起作用。 细节: > 质疑 结果
我试图捕捉包含指定路径的路径,如path/to/my/url/variablePart,在管道条件中,我放入了ctx.url.path == 'path/to/my/url/',但不幸的是,它只获取包含path/to/my/url/的日志,而不考虑包含可变部分的其他日志,有一个通配符可以帮助我捕捉以' path/to/my/url/'开头的每个路径。?我已经试过做CTX . URL . path