elasticsearch - Elasticsearch percolate函数中的搜索选项

标签 elasticsearch nest elasticsearch-percolate

我的问题是如何使用NEST(C#)在渗滤函数中使用多重匹配,倾斜和模糊性等搜索选项?

我想实现一个percolate函数,该函数返回与以下搜索函数完全相反的结果:

public List<string> search(string query){
.......
.......
var searchResponse = client.Search<Document>(s => s 
                .AllTypes()
                   .From(0)
                   .Take(10)
                .Query(q => q               // define query
                    .MultiMatch(mp => mp            // of type MultiMatch
                    .Query(input.Trim())
                    .Fields(f => f          // define fields to search against
                    .Fields(f3 => f3.doc_text))
                    .Slop(2)
                    .Operator(Operator.And)
                    .Fuzziness(Fuzziness.Auto))));
}

以下是我目前使用的过滤函数,但不知道如何包括多重匹配,倾斜和模糊选项。我在其文档中找不到有关此内容的详细信息。
var searchResponseDoc = client.Search<PercolatedQuery>(s => s
               .Query(q => q
               .Percolate(f => f
               .Field(p => p.Query)
               .DocumentType<Document>() //I have a class called Document
               .Document(myDocument))) // myDocument is an object of type Document

谢谢。

最佳答案

首先,您要执行multi_match查询,该查询具有所需的选项。在后者中,您执行percolator查询。

如果您想两者都做,则可以使用二进制和按位运算符,例如

.Query(q => 
    !q.MultiMatch(mp => mp
        .Query(input.Trim())
        .Fields(f => f.Fields(f3 => f3.doc_text))
        .Slop(2)
        .Operator(Operator.And)
        .Fuzziness(Fuzziness.Auto)
    )
    && q.Percolate(f => f
           .Field(p => p.Query)
           .DocumentType<Document>()
           .Document(myDocument)
    )
)

不能使用&&创建一个bool查询,并将这两个查询作为must子句。一元!运算符通过将查询包装在bool中并将查询放在must_not子句中来对查询求反。

查看更多信息https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/writing-queries.html



https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/bool-queries.html

关于elasticsearch - Elasticsearch percolate函数中的搜索选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45329990/

相关文章:

ruby-on-rails - 如何将 "where not"子句与 searchkick 一起使用

c# - 如何使用 NEST 更新 ElasticSearch 索引中的现有文档?

java - elasticsearch渗透java api示例

elasticsearch - gz 文件的 Filebeat

java - 将条目插入ElasticSearch的最佳方法是什么?

elasticsearch - 为什么Elasticsearch集群在集群重启时无法识别 super 用户?

elasticsearch - 使用Nest Client将多语言ElasticSearch文档映射到单语对象

elasticsearch - ElasticSearch:是否可以定义备用键

elasticsearch - ElasticSearch渗滤器可扩展性

elasticsearch - 有没有办法批量添加 ElasticSearch 过滤?