在 ElasticSearch 中分析同一个搜索字段两次 returns 0 个子字段结果
Analyzing the same search field twice returns 0 results on subfield in ElasticSearch
我有一个名为 search_text
的字段,它是一个全文搜索字段。
我正在使用 ngrams 来索引这个字段,我想添加一个新的子字段 search_text.words
来索引整个单词。
我试图实现这个,但是查询 search_text.words
总是 returns 0 次点击。
我是这样创建的:
"search_text" => {
"type" => "string",
"analyzer" => "ngram",
"search_analyzer" => "ngram_search",
"fields" => {
"words" => {"type" => "string",
"analyzer" => "ngram_search"}
}
}
我这里有完整的演示:
https://www.dropbox.com/s/wwxm3qe0oxc2z5y/Slimmed%20ElasticSearch%20Text%20%281%29.html?dl=0
查看您的保管箱文件,我认为问题在于映射类型被称为 search_variable
,而在您的批量查询中您使用的是映射类型 test_type
。
因此永远不会应用映射。
如果您将批量查询更改为此,它将起作用
bulk_insert_items = items_to_insert.flat_map do |item|
[
{index: {_index: 'test_index', _type: 'search_variable'}},
item
]
end
我有一个名为 search_text
的字段,它是一个全文搜索字段。
我正在使用 ngrams 来索引这个字段,我想添加一个新的子字段 search_text.words
来索引整个单词。
我试图实现这个,但是查询 search_text.words
总是 returns 0 次点击。
我是这样创建的:
"search_text" => {
"type" => "string",
"analyzer" => "ngram",
"search_analyzer" => "ngram_search",
"fields" => {
"words" => {"type" => "string",
"analyzer" => "ngram_search"}
}
}
我这里有完整的演示:
https://www.dropbox.com/s/wwxm3qe0oxc2z5y/Slimmed%20ElasticSearch%20Text%20%281%29.html?dl=0
查看您的保管箱文件,我认为问题在于映射类型被称为 search_variable
,而在您的批量查询中您使用的是映射类型 test_type
。
因此永远不会应用映射。
如果您将批量查询更改为此,它将起作用
bulk_insert_items = items_to_insert.flat_map do |item|
[
{index: {_index: 'test_index', _type: 'search_variable'}},
item
]
end