我在使用轮胎和关键字类型分析器设置弹性搜索时遇到问题。
我的映射定义是:
Tire.index 'my_index' do
delete
create :mappings => {
"my_type" => {
:properties => {
:id => { :type => 'string', :index => 'not_analyzed', :include_in_all => false },
:user_id => { :type => 'string', :index => 'not_analyzed'},
:team_id => { :type => 'string', :index => 'not_analyzed', :analyzer => 'keyword'},
"_timestamp" => { :enabled => true, :path => "created_on"}
}
}
}
end
我添加了一些数据
team:id: "blah-blih-bloh"
如果我搜索
curl -XGET 'http://localhost:9200/my_index/my_type/_search?q=team_id:blah'
如果分析仪是“关键字”,我可以找到我插入的数据。
我想使用facet为team_id分组数据,但鉴于关键字分析器似乎没有按预期工作,我无法检索到良好的结果,因为它标记了“team_id”字段。 如果我有两个用户使用team_id =“blah-blih-bloh”,我会得到2个结果为“blah”,2个用于“blih”,2个用于“bloh”,2个用于“blah-blih-bloh”。
我错过了什么吗?
编辑:我解决了这个问题,这与Tire有关。如果我做了,则轮胎没有被正确破坏并重新创建索引curl -XDELETE
在ElasticSearch的索引上,然后我执行了与以前相同的代码,正确创建了映射,数据插入正常,一切都按预期工作。