search - 更改 ElasticSearch 或 LogStash 中的默认分析器

标签 search elasticsearch logstash

我有来自 Logstash 的数据,正在以过度急切的方式进行分析。本质上,字段 "OS X 10.8" 将被分解为 "OS""X""10.8"。我知道我可以更改现有数据的映射和重新索引,但我如何更改默认分析器(在 ElasticSearch 或 LogStash 中)以避免在未来的数据中出现此问题?

具体解决方案:我在第一次向新集群发送数据之前为类型创建了一个映射。

来自 IRC 的解决方案:创建一个 Index Template

最佳答案

根据这个page可以为每个查询、每个字段或每个索引指定分析器。

索引时间,Elasticsearch 将按以下顺序查找分析器:

  • 字段映射中定义的分析器。
  • 在索引设置中名为 default 的分析器。
  • 标准 分析器。

查询时,还有几层:

  • 全文查询中定义的分析器。
  • 字段映射中定义的search_analyzer
  • 字段映射中定义的分析器。
  • 在索引设置中名为 default_search 的分析器。
  • 在索引设置中名为 default 的分析器。
  • 标准 分析器。

另一方面,这个 page指向重要的事情:

An analyzer is registered under a logical name. It can then be referenced from mapping definitions or certain APIs. When none are defined, defaults are used. There is an option to define which analyzers will be used by default when none can be derived.

因此,将自定义分析器定义为默认分析器的唯一方法是覆盖 pre-defined analyzers 之一。 ,在本例中为 default 分析器。 这意味着我们不能为我们的分析器使用任意名称,它必须命名为default

这里有一个简单的索引设置示例:

{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0,
    "analysis": {
      "char_filter": {
        "charMappings": {
          "type": "mapping",
          "mappings": [
            "\\u200C => "
          ]
        }
      },
      "filter": {
        "persian_stop": {
          "type": "stop",
          "stopwords_path": "stopwords.txt"
        }
      },
      "analyzer": {
        "default": {<--------- analyzer name must be default
          "tokenizer": "standard",
          "char_filter": [
            "charMappings"
          ],
          "filter": [
            "lowercase",
            "arabic_normalization",
            "persian_normalization",
            "persian_stop"
          ]
        }
      }
    }
  }
}

关于search - 更改 ElasticSearch 或 LogStash 中的默认分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19776784/

相关文章:

elasticsearch - 与简单的 python 日志记录 + 现有数据库日志表组合相比,使用 ELK 进行日志管理有什么优势?

twitter - 去建立事件未定义

ios - 如何更改 CSSearchableItem 中的年日期(内容类型 — kUTTypeMovie)?

elasticsearch - Elasticsearch -具有等效子句

elasticsearch - 单个对象数组上的Elasticsearch聚合

java - 使用Java 11启动 Elasticsearch 5.0.1时出现AccessControlException

elasticsearch es_rejected_execution_exception

php - wordpress中的自动完成搜索功能不断填充数据库中的所有职位

c# - 搜索并添加到按字母顺序排列的列表

linux - ms dos 或 cygwin 下搜索 docx 文件的命令行工具