用于从 mongodb 数据 C# 中搜索消除空格的弹性查询

Elastic query to search eliminating spaces from mongodb data C#

我想知道是否有办法搜索 MongoDB 数据,但不包括 space。我的 MongoDB 有这样的数据 -

"Element":"Ele1"
"Element":"Ele2"
"Element":"Ele 3"

我的搜索查询包含不包括 space 的字符串,即 "Ele1,Ele2,Ele3"。因此,当我将 "Ele3" 传递给我的搜索查询时,它不会 return 任何结果。我正在使用 ElasticSearch.net nuget。我的代码是这样的 -

var elResp = await data.MultiSearchAsync(m => m
                    .Query(q => q
                    .Nested(n => n
                    .Path("Element")
                    .Query(qq => qq
                        .Bool(b => b
                            .Must(m1 => m1
                            .Term("Element.keyword", "Ele1")))))))

有什么我可以做的,或者我必须在 MongoDb 中创建一个额外的字段来保存没有 space 的元素值。所以我可以从中进行检查。谢谢

您可以通过创建不带空格的额外字段来获得最佳性能,但是在 MongoDB 中,您可以只使用 $regex 来匹配带空格和不带空格的两个字段。

db.collection.find({ "Element": { $regex: /Ele\s*3/ } })

其中 \s 是一个空格,* 表示零次或多次出现。您预测的空格越多,您就越应该考虑添加一个没有任何空格的字段(因为性能),但 /E\s*l\s*e\s*3/ 仍然适用于这种情况。