ElasticSearch从查询自动完成功能开始

问题描述 投票:0回答:1

我想使用ElasticSearch和C#构建自动完成功能。但是我没有得到期望的结果。出于演示目的,这是我所做的。

1)创建的索引称为“名称”。

PUT names?pretty

2)使用POST命令添加了20个条目:

POST names/_doc/1
{
  "name" : "John Smith"
}

3)名称列表:

[ "John Smith", "John Smitha", "John Smithb", "John Smithc", "John Smithd", "John Smithe", "John Smithf",
  "John Smithg", "John Smithh", "John Smithi", "Smith John", "Smitha John", "Smithb John", "Smithc John",
  "Smithd John", "Smithe John", "Smithf John", "Smithg John", "Smithh John", "Smithi John",]

4)当我运行前缀查询时>

GET names/_search
{
  "query": {
    "prefix": {
      "name": {
        "value": "Smith"
      }
    }
  }
}

我原本希望找回“史密斯·约翰”,“史密斯·约翰”。...但是我找回“约翰·史密斯”,“约翰·史密莎”……我在做什么错?我需要更改什么?

我想使用ElasticSearch和C#构建自动完成功能。但是我没有得到期望的结果。出于演示目的,这是我所做的。 1)创建名为“名称”的索引。 PUT名称?漂亮...

elasticsearch
1个回答
0
投票

我猜您正在将name字段定义为text字段,默认情况下使用standard分析器并将令牌转换为小写。您可以使用ES的analyze API进行测试。

© www.soinside.com 2019 - 2024. All rights reserved.