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

时间:2018-01-07 18:36:53

标签: c# mongodb elasticsearch elasticsearch-net

我想知道是否有办法搜索除空格之外的MongoDB数据。我的MongoDB有像 -

这样的数据



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




我的搜索查询包含不包含空格的字符串,即#34; Ele1,Ele2,Ele3"。所以,当我通过" Ele3"到我的搜索查询它不会返回任何结果。我正在使用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中创建一个额外的字段,它可以节省没有空间的元素值。所以我可以从那里进行检查。感谢

1 个答案:

答案 0 :(得分:1)

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

Aaaaaaa1
Bbbbbbb1
Aaaaaaa2
Bbbbbbb2
Aaaaaaa3
Bbbbbbb3

其中db.collection.find({ "Element": { $regex: /Ele\s*3/ } }) 是空格,\s表示零或更多出现。您预测的空间越多,您应该考虑添加一个没有任何空格的字段(因为性能),但*仍将适用于此情况。