小编典典

ElasticSearch映射不起作用

elasticsearch

我正在尝试为各个字段使用不同的分析器设置ElasticSearch索引。但是,我似乎找不到一种设置特定于字段的分析器的方法。这是我创建(测试)索引的方法:

curl -XPOST localhost:9200/twitter
curl -XPUT 'http://localhost:9200/twitter/tweet/_mapping' -d '
{
    "tweet" : {
        "properties" : {
            "message" : {
                "type" : "string",
                "search_analyzer" : "snowball", 
                "index_analyzer" : "snowball"
            }
        }
    }
}'

如果我正确阅读了文档,则应创建类型为“ tweet”的索引“ twitter”,并且应通过雪球词根分析器分析“
message”字段的内容。为了对此进行测试,我尝试了以下查询:

curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{
    "message" : "Look, a fighting War-Unicorn!"
}'
curl -XGET localhost:9200/twitter/_search?q=fight

如果我没记错的话,那应该会受到打击,因为战斗是战斗的源泉。问题是,不是,我的点击率为零。看起来好像ElasticSearch完全忽略了映射(即使ElasticSearch接受所有这些查询,因为我对每个查询都“确定”)。

我已经尝试过用雪球分析仪替换默认的分析仪,然后它可以工作;事实是,我完全需要拥有针对特定领域的分析仪,因此这对我没有帮助。我还尝试了不同的分析器,以及将“
index”设置为“ no”但无济于事的事情。

我究竟做错了什么?


阅读 359

收藏
2020-06-22

共1个答案

小编典典

要使用特定于字段的分析器,您需要在查询中指定此字段。否则,将使用默认分析仪。尝试

curl -XGET 'localhost:9200/twitter/_search?q=message:fight'

要么

curl -XGET 'localhost:9200/twitter/_search?df=message&q=looking'
2020-06-22