如何在弹性搜索中对_id执行部分匹配

时间:2017-01-17 13:25:38

标签: json elasticsearch sense

我正在尝试在我的弹性搜索实例中的_id字段上执行部分字匹配。

在搜索官方文档后,我发现最好的方法是创建一个n-gram分析器,所以使用Sense我这样做了:

PUT /index2
{"settings": {
    "number_of_shards": 1, 
    "analysis": {
        "filter": {
            "partial_filter": { 
                "type":     "ngram",
                "min_gram": 2,
                "max_gram": 20
            }
        },
        "analyzer": {
            "partial": {
                "type":      "custom",
                "tokenizer": "standard",
                "filter": [
                    "lowercase",
                    "partial_filter" 
                ]
            }
        }
    }
}}

我尝试使用以下方法测试分析仪:

POST /index2/_analyze
{
  "analyzer": "partial",
  "text": "brown fox"
}

它按预期工作,产生适当的组合。 下一步应该是将分析仪应用到相关领域,所以我试着这样做:

PUT /index2/_mapping/type2
{
    "type2": {
        "properties": {
            "_id": {
                "type":     "string",
                "analyzer": "partial"
            }
        }
    }
}

但是我收到了一个错误:

  

“reason”:“字段[_id]在[type2]中定义了两次”

可能是因为_id字段是在index2创建期间与分析器一起创建的。

所以我的问题是如何在_id字段上使用部分搜索? 还有其他办法吗?

提前致谢!

0 个答案:

没有答案