繁体   English   中英

Elasticsearch NEST和使用通配符计数

[英]Elasticsearch NEST and Count with Wildcards

我有ES和嵌套工作,并且搜索适用于通配符。 我想对记录数进行计数,我所看到的计数允许进行完全匹配,但是我想要一个“ like”匹配(在sql中-作为类比)。 下面的代码不返回任何内容。 有任何想法吗?

var searchDataCount = client.Count<SearchRow>(s => s.Index("myindex").AllTypes().
Query(q => q.QueryString(qs => qs.OnFields(j => j.searchstring).Query(@searchString))));

var searchDataResults = client.Search<SearchRow>(s =>s.Index("myindex").AllTypes().
From(startcount).Size(recordsize). Query(q => q.
QueryString(qs => qs.OnFields(j => j.searchstring).Query(@searchString))));

可能您可以使用相同的查询模块来执行与sql中的LIKE查询类似的搜索,方法是在搜索查询中添加“ *”

例:

如果您要在sql中将字符串搜索为“ data%”,则可以在Elastcisearch中进行如下查询

            var searchDataResults = client
            .Search<SearchRow>(s => s.Index("myindex")
                .AllTypes()
                .From(startcount)
                .Size(recordsize)
                .Query(q => q
                    .QueryString(qs => qs
                        .OnFields(j => j.searchstring)
                        .Query("data*"))));

类似情况:sql => Elasticsearch

data% => data*
%data => *data
%data% => *data*

解决方案是在默认索引中使用不同的索引。 这是给我想法的帖子-https: //github.com/elastic/elasticsearch-net/issues/1404 实际代码-

 settings = new ConnectionSettings(node, defaultIndex: "myindex");

匹配client.count查询中的索引所需的默认索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM