我正在尝试创建一个可搜索多个字段的elasticsearch查询。到目前为止,这个工作正常。但是,我想对此进行完善。 假设该词已编入索引:“测试”。但是,当我搜索“ tes”时,他找不到适合我的单词,但是我已经想显示它了-但是与查询的结合使我面临挑战。
{
"multi_match" : {
"query": "*" + query + "*",
"type": "cross_fields",
"operator": "and",
"fields": ["article.number^1","article.name_de^1", "article.name_en^5", "article.name_fr^5", "article.description^1"],
"tie_breaker": 0,
}
答案 0 :(得分:1)
根据您的限制,这是您的选择。
如果您想在搜索词之前/之后使用通配符,则可以使用wildcard query。这在查询时具有很高的处理成本。
如果可以选择增加存储成本,则可以选择在分析过程中标记输入内容。参见ngram tokenizer。请注意,如果字符串很长,它可能会迅速激增存储需求。