如何在语言分析器中使用嵌套映射

时间:2017-09-14 04:54:18

标签: elasticsearch

我目前正在使用elasticsearch中的语言分析器。在此我发现如果我们需要使用分析器搜索文档,那么我们需要定义映射和分析器。 在我的情况下,如果文档包含普通的文本字段,这可以正常工作,但是当我将相同的属性应用于嵌套字段时,分析器就无法工作。

这是语言分析器的代码

PUT checkmap
{
  "settings": {
    "analysis": {
      "analyzer": {
        "stemmerenglish": {
          "tokenizer": "standard",
          "filter": [
            "standard",
            "lowercase",
            "my_stemmer"
          ]
        }
      },
      "filter": {
        "my_stemmer": {
          "type": "stemmer",
          "name": "english"
        }
      }
    }
  },
  "mappings": {
    "dd": {
      "properties": {
        "Courses": {
          "type": "nested",
          "properties": {
            "Sname": {
              "type": "text",
              "analyzer": "stemmerenglish",
              "search_analyzer": "stemmerenglish"
            }
          }
        }
      }
    }
  }
}

请帮助我解决上述问题。

1 个答案:

答案 0 :(得分:2)

您必须将Nested Query用于嵌套类型。使用以下查询

GET checkmap/_search
{
 "query": {
  "nested": {
     "path": "Courses",
     "query": {
        "match": {
           "Courses.Sname": {
              "query": "Jump"
             }
          }
        }
      }
    }
  }

了解更多here