elasticsearch Elasticsearch Java HighLevelRestClient如何创建未分析的索引?,elasticsearch,elasticsearch-rest-client,elasticsearch,Elasticsearch Rest Client" /> elasticsearch Elasticsearch Java HighLevelRestClient如何创建未分析的索引?,elasticsearch,elasticsearch-rest-client,elasticsearch,Elasticsearch Rest Client" />

elasticsearch Elasticsearch Java HighLevelRestClient如何创建未分析的索引?

elasticsearch Elasticsearch Java HighLevelRestClient如何创建未分析的索引?,elasticsearch,elasticsearch-rest-client,elasticsearch,Elasticsearch Rest Client,我正在使用HighLevelRestClient 7.4.0,我很好奇在使用索引API为文档编制索引时,如何创建一个未分析的字段 问题是,我正在尝试按标题实现电影搜索,如果搜索“矩阵”,它将返回正确的结果,但如果搜索“矩阵”,它将返回几乎所有标题中包含“The”的电影(matchQuery就是这种情况) 我改为使用termQuery,但现在当我搜索“矩阵”时,它返回正确的结果,当我搜索“矩阵”时,它没有找到任何东西,而“矩阵”的情况也是如此 我猜问题在于,当我为文档编制索引时,默认情况下会分析每

我正在使用HighLevelRestClient 7.4.0,我很好奇在使用索引API为文档编制索引时,如何创建一个未分析的字段

问题是,我正在尝试按标题实现电影搜索,如果搜索“矩阵”,它将返回正确的结果,但如果搜索“矩阵”,它将返回几乎所有标题中包含“The”的电影(matchQuery就是这种情况)

我改为使用termQuery,但现在当我搜索“矩阵”时,它返回正确的结果,当我搜索“矩阵”时,它没有找到任何东西,而“矩阵”的情况也是如此

我猜问题在于,当我为文档编制索引时,默认情况下会分析每个文本字段。如何创建未分析的索引


现在,我通过简单地使用GSON将数据结构转换为Json来为电影编制索引

为了正确执行搜索,我不得不使用matchPhraseQuery而不是matchQuery或termQuery。

如果创建未分析(或关键字)字段,则只能搜索整个文本,例如“矩阵”,搜索“矩阵”将不会返回任何内容。而是在匹配查询中传递“And”运算符。例如“查询”:{“匹配”:{“消息”:{“查询”:“这是一个测试”、“运算符”:“和”}}}}}您还可以定义匹配短语和匹配短语之间的最小匹配百分比一差-在匹配短语的单词顺序中是重要的,而在匹配短语中是不重要的(只有那些代币应该在那里)