Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何查询elasticsearch记录,其中';值==1或未记录的值';?_C#_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,C#,elasticsearch" /> elasticsearch,C#,elasticsearch" />

C# 如何查询elasticsearch记录,其中';值==1或未记录的值';?

C# 如何查询elasticsearch记录,其中';值==1或未记录的值';?,c#,elasticsearch,C#,elasticsearch,TLDR——如何查询elasticsearch中“value==1或value not recorded”的记录? 我们在一个相对较新的系统中使用Elasticsearch进行审计跟踪。审计最初仅适用于单个实体 通过创建消息、转换为json并存储,它被保存在Elasticsearch中。这是一个古老的记录: public class AuditMessage { public int EntityId { get; set; } } 现在,我们希望记录下一个实体的审核跟踪,并将enum

TLDR——如何查询elasticsearch中“value==1或value not recorded”的记录?

我们在一个相对较新的系统中使用Elasticsearch进行审计跟踪。审计最初仅适用于单个实体

通过创建消息、转换为json并存储,它被保存在Elasticsearch中。这是一个古老的记录:

public class AuditMessage
{
    public int EntityId { get; set; }
}
现在,我们希望记录下一个实体的审核跟踪,并将enum添加到distinquiresh:

public class AuditMessage
{
    public AuditHistoryEnum AuditHistoryEnum { get; set; }
    public int EntityId { get; set; }
}
最后我们这样询问:

                var response = await _elasticClient.SearchAsync<AuditMessage>(_ => _
                .Index(indices)
                .From(0)
                .Size(500)
                .Sort(__ => __.Field(t => t.Timestamp, SortOrder.Descending))
                .Query(
                    q =>
                        q.Bool(b=>
                            b.Must(
                                bs=>bs.Term(m => m.Field(f => f.EntityId).Value(entityId)),
                                bs=>bs.Match(m=> m.Field(f=> f.AuditHistoryEnum).Query(auditHistoryEnum.ToString())) || bs.Match(m => m.Field(f => f.AuditHistoryEnum).Query(null))
                                ))
                        
                )
            );
var response = await _elasticClient.SearchAsync<AuditMessage>(_ => _
    .Index(indices)
    .From(0)
    .Size(500)
    .Sort(__ => __.Field(t => t.Timestamp, SortOrder.Descending))
    .Query(q => q.Terms(t => t.Field(f => f.AuditHistoryEnum).Terms(auditHistoryEnum.ToString()))
        || !q.Exists(e => e.Field(f => f.AuditHistoryEnum))));
var response=await\u elasticClient.SearchAsync(\u=>_
.指数
.从(0)
.尺寸(500)
.Sort(uuu=>uuu.Field(t=>t.Timestamp,SortOrder.Descending))
.查询(
q=>
q、 布尔(b=>
b、 必须(
bs=>bs.Term(m=>m.Field(f=>f.EntityId).Value(EntityId)),
bs=>bs.Match(m=>m.Field(f=>f.AuditHistoryEnum.Query(AuditHistoryEnum.ToString())| | bs.Match(m=>m.Field(f=>f.AuditHistoryEnum.Query(null))
))
)
);
使用上面的查询,我获得了所有新文档,其中AuditHistoryEnum是存储文档中的一个字段。无法使用上面的查询检索添加之前存储的文档。我做错了什么


BR,Anders

试试这样的方法:

                var response = await _elasticClient.SearchAsync<AuditMessage>(_ => _
                .Index(indices)
                .From(0)
                .Size(500)
                .Sort(__ => __.Field(t => t.Timestamp, SortOrder.Descending))
                .Query(
                    q =>
                        q.Bool(b=>
                            b.Must(
                                bs=>bs.Term(m => m.Field(f => f.EntityId).Value(entityId)),
                                bs=>bs.Match(m=> m.Field(f=> f.AuditHistoryEnum).Query(auditHistoryEnum.ToString())) || bs.Match(m => m.Field(f => f.AuditHistoryEnum).Query(null))
                                ))
                        
                )
            );
var response = await _elasticClient.SearchAsync<AuditMessage>(_ => _
    .Index(indices)
    .From(0)
    .Size(500)
    .Sort(__ => __.Field(t => t.Timestamp, SortOrder.Descending))
    .Query(q => q.Terms(t => t.Field(f => f.AuditHistoryEnum).Terms(auditHistoryEnum.ToString()))
        || !q.Exists(e => e.Field(f => f.AuditHistoryEnum))));
var response=await\u elasticClient.SearchAsync(\u=>_
.指数
.从(0)
.尺寸(500)
.Sort(uuu=>uuu.Field(t=>t.Timestamp,SortOrder.Descending))
.Query(q=>q.Terms(t=>t.Field(f=>f.AuditHistoryEnum).Terms(AuditHistoryEnum.ToString())
||!q.Exists(e=>e.Field(f=>f.AuditHistoryEnum));

谢谢!这是前进的道路@安德森:请记住:)