首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性搜索更新索引设置分析器

弹性搜索更新索引设置分析器
EN

Stack Overflow用户
提问于 2020-05-07 13:34:37
回答 2查看 150关注 0票数 0

我有一个包含多个主题的图书索引

  • 化学
  • 生物

每个主题都有一组同义词和一个全局同义词。

设置{“分析”:{“筛选器”:{ "biology_synonyms":{“类型”:“同义词”,“同义词”:"a,aa,aaa“},"chemistry_synonyms":{“类型”:“同义词”,“同义词”:"c,cc,ccc“},"global_synonyms":{ "type":”同义词“,“同义词”:"x,xx,xxx“},”分析器“:{ "chemistry_analyzer":{ "filter":"global_synonyms","chemistry_synonyms“},"biology_analyzer":{”筛选器“:"global_synonyms","biology_synonyms”}

比方说,在任何时候,我都想增加一个名为“天文学”的新学科

现在的问题是如何更新索引设置以添加新的"Astronomy_synonyms“和"Astronomy_analyzer”

我的应用程序要求我用现有的过滤器和分析器附加设置,我不想覆盖(替换设置)

EN

回答 2

Stack Overflow用户

发布于 2020-05-07 13:55:15

您肯定可以添加新的令牌过滤器和分析器,但是需要在更新设置之前关闭索引,并在完成后重新打开它。在下面的内容中,我假设索引已经存在。

假设您使用以下初始设置创建索引:

代码语言:javascript
复制
PUT /books
{
  "settings": {
    "analysis": {
      "filter": {
        "biology_synonyms": {
          "type": "synonym",
          "synonyms": [
            "a, aa, aaa"
          ]
        },
        "chemistry_synonyms": {
          "type": "synonym",
          "synonyms": [
            "c, cc, ccc"
          ]
        },
        "global_synonyms": {
          "type": "synonym",
          "synonyms": [
            "x, xx, xxx"
          ]
        }
      },
      "analyzer": {
        "chemistry_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "global_synonyms",
            "chemistry_synonyms"
          ]
        },
        "biology_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "global_synonyms",
            "biology_synonyms"
          ]
        }
      }
    }
  }
}

然后,您需要关闭索引:

代码语言:javascript
复制
POST books/_close

然后,您可以添加新的分析器和令牌过滤器:

代码语言:javascript
复制
PUT /books/_settings
{
  "analysis": {
    "filter": {
      "astronomy_synonyms": {
        "type": "synonym",
        "synonyms": [
          "x, xx, xxx"
        ]
      }
    },
    "analyzer": {
      "astronomy_analyzer": {
        "type": "custom",
        "tokenizer": "standard",
        "filter": [
          "global_synonyms",
          "astronomy_synonyms"
        ]
      }
    }
  }
}

并最终重新打开索引

代码语言:javascript
复制
POST books/_open

如果然后检查索引设置,您将看到所有内容都已正确合并。

票数 1
EN

Stack Overflow用户

发布于 2020-05-07 13:55:36

您只能在封闭索引上定义新的分析器。若要添加分析器,必须关闭索引、定义分析器并重新打开索引。

代码语言:javascript
复制
POST /books/_close

PUT /books/_settings
{
    "analysis": {
        "filter": {
            "astronomy_synonyms": {
                "type": "synonym",
                "synonyms": [
                   "a, aa, aaa=>a"
                ]
            }
        },
        "analyzer": {
            "astronomy_analyzer": {
              "tokenizer" : "whitespace",
                "filter": [
                    "global_synonyms", "astronomy_synonyms"
                ]
            }
        }
    }
}

POST /books/_open
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61659127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档