当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch 2.3-嵌套-使用语音分析器

钱弘壮
2023-03-14

我使用Elasticsearch 2.3-Nest API来搜索数据。我正在为文档使用属性映射。我想知道如何使用语音分析器使用属性映射。

文档类:

[ElasticsearchType(Name = "contact", IdProperty = nameof(EntityId))]
public class ESContactSearchDocument
{
    [String(Name = "entityid")]
    public string EntityId { get; set; }

    [String(Name = "id")]
    public string Id { get; set; }

    [String(Name = "name")]
    public string Name { get; set; }

    [String(Name = "domain")]
    public string Domain { get; set; }

    [String(Name = "description")]
    public string Description { get; set; }

    [String(Name = "email")]
    public string Email { get; set; }

    [String(Name = "firstname", Analyzer = "phonetic")]
    public string FirstName { get; set; }

    [String(Name = "lastname", Analyzer = "phonetic")]
    public string LastName { get; set; }
}

索引创建和插入:

var createIndexResponse = serviceClient.CreateIndex(indexName, c => c.Mappings(m => m.Map<ESContactSearchDocument>(d => d.AutoMap())));

var indexManyResponse = await serviceClient.IndexManyAsync(ESMapper.Map<TDocument, ESContactSearchDocument>(documentsBatch), indexName, typeName);

ESMapper仅用于从一种类型转换为另一种类型。

结果映射:

{
  "contact-uklwcl072": {
    "mappings": {
      "contact": {
        "properties": {
          "description": {
            "type": "string"
          },
          "domain": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "entityid": {
            "type": "string"
          },
          "firstname": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "lastname": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      }
    }
  }
}

我还安装了语音分析插件

共有1个答案

空谦
2023-03-14

查看自动映射文档;您需要将分析器的名称分配给属性上的analyzer属性

public class Document
{
    [String(Analyzer="phonetic")]
    public string Name {get; set;}
}

然后在映射文档类型时调用AutoMap(),例如在创建索引时

client.CreateIndex("index-name", c => c
    .Mappings(m => m
        .Map<Document>(d => d
            .AutoMap()
        )
    )
);

收益率

{
  "mappings": {
    "document": {
      "properties": {
        "name": {
          "type": "string",
          "analyzer": "phonetic"
        }
      }
    }
  }
}
 类似资料:
  • 我开始编写BibTeX解析器。我想做的第一件事是解析一个带括号的项。例如,带大括号的项可以是作者字段或标题。字段中可能有嵌套的大括号。以下代码不处理嵌套大括号: 输出: 现在,为了让解析器接受嵌套的大括号,我想保留一个计数器,记录当前解析的开始大括号的数量,当遇到结束大括号时,我们减少计数器。如果计数器达到零,我们假设已解析完整项。 为了遵循这个想法,我尝试拆分带括号的项regex,在每个字符上实

  • 问题内容: 我正在尝试从上述JSON检索邮政编码。我正在用gson解析它。我是JSON的新手,从我在这里的所有文章中读到的内容(有些与此类似),我都知道字段名称应保持原样。所以我知道我必须做出4类,即响应,视图,结果和地址。我使它们成为静态嵌套类,但是我只得到空值作为输出。在下一个JSON中,我有多个地址。但是我只停留在这个单一的回应上。 举一个简短的例子,我尝试使用此代码检索Timestamp,

  • 我想做的是使用Gson将嵌套的json数据解析为Java对象,并使用自定义的toString()将其打印出来。 Json内容 POJO类:示例 POJO类:JsonFormatter 我的POJO还有其他类,我试图将其解析为Gson的方式是: 但是当我试图打印出它的子值时,比如 我得到了错误: 我想实现的是将上面的json内容打印成这样: 谁能帮我解决这个问题吗?提前谢谢!

  • 问题内容: 我必须与API进行交互,并且响应格式(根据我的阅读)似乎结构不良。我发现一个Google 网上论坛在这里回答了一个类似的问题,但是我在实现Response类来处理Gson.fromJson时遇到了麻烦。有没有我想念的例子? 问题答案: JSON对象可以由或Javabean类表示。这是一个使用Javabean的示例。 如下使用它:

  • 我被困在将嵌套JS与宇宙数据库核心SQL API集成上。我知道有一个用于 Cosmos DB 的模块(https://github.com/nestjs/azure-database),但我需要数据架构来支持嵌套的 json,如下所示: 我认为@nestjs/azure-database不支持这一点(或者我可能错了),因为当我检查他们的示例和quickstart时,没有这样的json模式的示例。

  • 问题内容: 我正在尝试使用具有以下结构的Java中的gson解析一些JSON数据,但是通过在线查看示例,我找不到任何能完成此工作的东西。 有人可以协助吗? 问题答案: 您只需要创建一个Java类结构即可表示JSON中的数据。为了做到这一点,我建议您将JSON复制到此在线JSON Viewer中 ,您会发现JSON的结构更加清晰… 基本上,您需要这些类(伪代码): 请注意,您的类中的属性名称必须与J