在 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 或更改分析器。
我有一个带有“*”标签的文档
然而,当我构建一个术语查询时,它 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 或更改分析器。