elasticsearch

时间:2015-12-22 09:40:56

标签: c# elasticsearch

我有一个存储在弹性搜索中的文档(搜索URI为:http://localhost:9200/infypos/product/11111),数据为

{

    "id": "11111",
    "name": "PROMO GORE-TEX GLOVE",
    "parent": "ST26923",
    "price": "20"
}

现在如果我将搜索字符串提供为“PROMO”或“GORE-TEX”或“GLOVE”,我需要从文档中获取数据,就像子字符串搜索一样。我用谷歌搜索,我没有得到一个明确的答案。 我该怎么做才能进行子串搜索

1 个答案:

答案 0 :(得分:0)

要搜索子字符串,最好将此字段定义为未分析,然后使用通配符。

"query": {
    "wildcard": {
       "name": {
          "value": "PROMO GORE*"
       }
    }
}

要指定未分析的字符串,您必须在将数据放入elasticsearch之前指定映射。

{
"infypos": {
      "mappings": {
         "product": {
            "properties": {
               "name": {
                  "type": "string",
                  "index":    "not_analyzed"
               },
               "parent": {
                  "type": "string"
               },
               "price": {
                  "type": "long"
               }
            }
         }
      }
  }
}