在 Elasticsearch 中使用 *(星号)作为术语查询

Use * (asterix) as a term query in Elastic search

我有一个带有“*”标签的文档

然而,当我构建一个术语查询时,它 returns 没有结果。如何查询带有“*”标签的文档。我猜这是一个需要转义的特殊字符。

更新答案

我需要将 属性 设置为不分析,这样弹性搜索就不会删除标点符号等。

$myTypeMapping = array(
    '_source' => array(
        'enabled' => true
    ),
    'properties' => array(
        'tag' => array("type" => "string", "index" => "not_analyzed")
    )
);
$indexParams['body']['mappings']['file'] = $myTypeMapping;

如果您的 tag 字段被分析,则星标未编入索引。自己看看:

curl -XGET 'localhost:9200/_analyze?analyzer=standard' -d '*'

回复:

{"tokens":[]}

您需要将字段更改为 not_analyzed 或更改分析器。