【问题标题】:How to setup a tokenizer in elasticsearch如何在 elasticsearch 中设置分词器
【发布时间】:2013-02-26 00:15:14
【问题描述】:

我有一个使用 elasticsearch-jetty 项目的嵌入式弹性搜索,我需要设置为使用比默认更好的标记器。我想使用关键字标记器。

我一生都无法通过配置文件弄清楚如何做到这一点。谁能指出我通过配置文件做到这一点的方法?

顺便说一句,是否可以在索引启动并运行时通过对索引执行 POST 来调整索引?我真的很想了解如何使用它,谢谢。

编辑/更新:我在运行 curl -XPUT 或 -XPOST 到 localhost:9200 以尝试调整我在此处搜索帮助时看到的一些示例/论坛中的设置时遇到问题,我得到了结果of '没有处理 uri [] 和方法 [PUT]/[POST].

编辑 2:更新,对索引执行 XPUT 有效,但我收到有关“索引已存在”的错误。我知道它存在,我想更新它。

【问题讨论】:

    标签: rest elasticsearch config


    【解决方案1】:

    您可以在配置文件中定义映射,但在大多数情况下,通过 API 进行配置更容易/更灵活。例如,此命令会将关键字/小写分析器添加到索引test

    $ curl -XPUT localhost:9200/testindex/ -d '
    {
      "settings":{
         "index":{
            "analysis":{
               "analyzer":{
                  "analyzer_keyword":{
                     "tokenizer":"keyword",
                     "filter":"lowercase"
                  }
               }
            }
         }
      },
      "mappings":{
         "test":{
            "properties":{
               "title":{
                  "analyzer":"analyzer_keyword",
                  "type":"string"
               }
            }
         }
      }
    }'
    

    【讨论】:

    • 感谢您的回复。我尝试为当前存在的索引执行 XPUT,并收到有关索引已存在的错误。你能帮我理解吗?是否可以编辑现有索引?
    • 如果已创建索引,您可以使用 PUT 映射 API 更改映射:elasticsearch.org/guide/reference/api/…。但请注意,属性的映射一旦创建就无法更改。如果您需要更改属性,则必须使用新映射创建新索引
    • 我已经创建了自定义分析器并且能够在 _settings 中看到它。但由于我使用的是 Nest .net 客户端,因此无法将其添加到自动映射属性中。通过添加 [Text(Analyzer = "analyzer_keyword")]。请指导
    【解决方案2】:

    要更新现有索引,请使用

    $ curl -XPUT localhost:9200/testindex/_settings -d '
    {
    ..........
    }
    

    但是您不能更新非动态设置。

    【讨论】:

      猜你喜欢
      • 2015-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多