NEST ElasticSearch Guid问题

坎蒂诺斯

我在筛选有关Guid字段的查询时遇到了一些问题。这里是我的代码示例。我错过了什么?

public class myObject 
{
  public Guid Id {get;set}
  public String Field1 { get; set; }
  public String Field2 { get; set; }
  public String Fieldn { get; set; }
  public ReadingRightsEnum ReadingRights { get; set; }
  public Guid UserId { get; set; }
}

// Index fct example
public void IndexMyObject(obj)
{
   var result = await myClient.IndexAsync(obj, i => i
                              .Index("myIndexName")
                              .Type("myObject")
                              .Id(obj.Id.ToString())
                              .Refresh());
}

// Index fct example
public void SearchOnlyInMyUserObject(string userQuery, Guid userId)
{
    var searchResult = await myClient.SearchAsync<myObject>(body =>
        body.Query(q => 
            q.QueryString(qs => qs.MinimumShouldMatchPercentage(100).Query(userQuery))
            && q.Term(i => i.UserId, userId))
        .Fields(f => f.Id)
        .Size(200));
}

// Index fct example with filter
public void SearchOnlyInMyUserObject(string userQuery, Guid userId)
{
    var filters = new List<FilterContainer>
    {
         new FilterDescriptor<myObject>().Bool(b => b.Must(m => m.Term(i => i.UserId, userId)));
    };
    var searchResult = await myClient.SearchAsync<myObject>(body =>
        body
        .Filter(f => f.And(filters.ToArray()))
        .Query(q => 
            q.QueryString(qs => qs.MinimumShouldMatchPercentage(100).Query(userQuery)))
        .Fields(f => f.Id)
        .Size(200));
}

如果我对其他参数进行过滤,则这两个函数都可以正常工作,但对Guid进行过滤时,则不返回任何内容。索引对象时是否应该将Guid转换为字符串?

如果我做http:// xxxxxxx:9200 / _search?q = userId:e4aec7b4-c400-4660-a09e-a0ce064f612e,就可以正常使用。

有任何想法吗?

预先感谢

在此处编辑myindex示例的06/12:

myIndexName":{
    "mappings":{
        "myObject":{
            "properties":{
                "readingrights":{
                    "type":"integer"
                },
                "id":{
                    "type":"string"
                },
                "field1":{
                    "type":"string"
                },      
                "field2":{
                    "type":"string"
                },                
                "userId":{
                    "type":"string"
                }
            }
        }
    }
}
坎蒂诺斯

我暂时不对Guid为什么会出现问题感到满意...但是现在我对一种糟糕的替代方法感到满意:而不是:

q.QueryString(qs => qs.MinimumShouldMatchPercentage(98).Query(userQuery))
&& q.Term(i => i.UserId, userId)

我做了一个双查询字符串:

q.QueryString(qs => qs.MinimumShouldMatchPercentage(98).Query(userQuery))
&& q.QueryString(qs => qs.MinimumShouldMatchPercentage(100).Query(" \"" + userId+ "\""))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用 NEST 与 ElasticSearch 进行 guid 匹配

来自分类Dev

ElasticSearch NEST查询

来自分类Dev

ElasticSearch Nest插入/更新

来自分类Dev

Elasticsearch-NEST-Upsert

来自分类Dev

ElasticSearch NEST OR查询

来自分类Dev

Elasticsearch NEST MultiSearch ArgumentNullException

来自分类Dev

ElasticSearch 2.0 NEST迁移

来自分类Dev

NEST elasticsearch DateRange 查询

来自分类Dev

NEST Elasticsearch 高级排序

来自分类Dev

使用NEST和ElasticSearch的DeleteByQuery

来自分类Dev

Elasticsearch Nest字段增强+模糊

来自分类Dev

ElasticSearch NEST返回特定字段

来自分类Dev

Elasticsearch Nest-查询别名

来自分类Dev

Elasticsearch Nest:获取随机文档

来自分类Dev

NEST框架中的LINQ for ElasticSearch

来自分类Dev

使用NEST批量插入ElasticSearch

来自分类Dev

Elasticsearch Nest:获取随机文档

来自分类Dev

Nest / ElasticSearch按_uid排序

来自分类Dev

将ElasticSearch多索引查询转换为NEST查询时遇到问题

来自分类Dev

Elasticsearch.net和Nest(C#)中的日期格式问题

来自分类Dev

Elasticsearch NEST按日期范围过滤

来自分类Dev

使用NEST的ElasticSearch索引/插入失败

来自分类Dev

跨多种类型的ElasticSearch NEST查询

来自分类Dev

用于C#的ElasticSearch NEST替代方案。

来自分类Dev

Elasticsearch,Nest和Lucene.net

来自分类Dev

使用NEST在ElasticSearch上进行批量更新

来自分类Dev

在ElasticSearch NEST查询中返回Raw Json

来自分类Dev

使用NEST调用Elasticsearch模板查询吗?

来自分类Dev

如何使用NEST elasticsearch批量插入Json?