Elasticsearch.net NEST 无法过滤网址

本文关键字:过滤 net NEST Elasticsearch | 更新日期: 2023-09-27 18:37:21

我正在运行一个应用程序,基本上创建了一个URL缩短器,当我设置大写和小写的"shorurl"时,我无法获得查询或过滤器来找到它。 但是,对于其他更简单的字段,它工作得很好。 我尝试在上面做小写,但不确定如何匹配。

下面是字段定义:

       [ElasticProperty(Name = "shorturl", IncludeInAll = true)]
        public string ShortUrl { get; set; }

下面是一个示例:

        string url = "http://test.com/JjdWtPoV";
        FilterContainer filter = new FilterContainer();
        filter = Filter<Data>.Term("shorturl", url);
        var results = this.Client.Search<Data>(s => s
            .Filter(filter)
        );
        QueryContainer q = new QueryContainer();
        q = Query<Data>.Term("shorturl", url);
        results = this.Client.Search<Data>(s => s
            .Query(q)
        );
        results = this.Client.Search<Data>(s => s
            .Query(f => f.Term(p=> p.ShortUrl, url))
        );

应该注意以下是我正在使用的版本:

        <?xml version="1.0" encoding="utf-8"?>
        <packages>
          <package id="Elasticsearch.Net" version="1.3.1" targetFramework="net45" />
          <package id="NEST" version="1.3.1" targetFramework="net45" />
          <package id="Newtonsoft.Json" version="6.0.1" targetFramework="net45" />
        </packages>

找到答案需要确保字符串设置了"未分析"

        [ElasticProperty(Name = "shorturl", IncludeInAll = true,                          
                    Index=FieldIndexOption.NotAnalyzed)]
        public string ShortUrl { get; set; }

Elasticsearch.net NEST 无法过滤网址

   [ElasticProperty(Name = "shorturl", IncludeInAll = true,                          
                Index=FieldIndexOption.NotAnalyzed)]
    public string ShortUrl { get; set; }