elasticsearch Elasticsearch-带或不带“搜索”;博士;?,elasticsearch,couchbase,nest,elasticsearch,Couchbase,Nest" /> elasticsearch Elasticsearch-带或不带“搜索”;博士;?,elasticsearch,couchbase,nest,elasticsearch,Couchbase,Nest" />

elasticsearch Elasticsearch-带或不带“搜索”;博士;?

elasticsearch Elasticsearch-带或不带“搜索”;博士;?,elasticsearch,couchbase,nest,elasticsearch,Couchbase,Nest,我在Nest C#Elasticsearch上遇到了一些关于“doc.”关键字的奇怪问题。 我使用的是Couchbase,我有一个类,其中一个字段是一个对象数组 我尝试在这个数组中搜索特定的值。 大概是这样的: string mailFilesKey = string.Empty; ISearchResponse<object> result = _mainManager.Client.Search<object>(c => c

我在Nest C#Elasticsearch上遇到了一些关于“doc.”关键字的奇怪问题。 我使用的是Couchbase,我有一个类,其中一个字段是一个对象数组 我尝试在这个数组中搜索特定的值。 大概是这样的:

        string mailFilesKey = string.Empty;
        ISearchResponse<object> result = _mainManager.Client.Search<object>(c => c
        .Type("MailFiles")
        .Query(q =>
            q.Term("SentFile_Id", fileId))
        .Size(1));

为什么?

哈哈,好的,不错的。我很久以前就有了这个东西,当时我开始使用Nest和elastic。如果有对象,则可以使用lambda表达式 比如
f=>f.SentFile\u Id
。 现在,当您使用字符串获取嵌套中字段的名称时,您必须知道所有字段、索引名和弹性体中的类型都是以小写首字母存储的。所以你应该使用这个:
q.Term(“sentFile\u Id”,fileId))

应该很好用

这完全取决于映射。如果名为
doc
的“对象”或“嵌套”类型未包含
SentFile\u Id
,则它将无法使用
doc.
作为前缀。大概是因为它起作用了,所以您没有将它包含在
文档中
。患者说,“医生,当我这样做时它会痛。”医生回答,“那就不要这样做!”使用并检查查询嵌套触发的内容,以弹性搜索并比较它们。
     q.Term("doc.SentFile_Id", fileId))