【问题标题】:Elasticsearch Java HighLevelRestClient how to create not_analyzed index?Elasticsearch Java HighLevelRestClient如何创建not_analyzed索引?
【发布时间】:2019-10-25 18:37:55
【问题描述】:

我正在使用 HighLevelRestClient 7.4.0,我很好奇在使用 Index API 索引文档时如何创建 not_analyzed 字段。

问题是我正在尝试按标题实现电影搜索,如果我搜索“矩阵”它会返回正确的结果,但如果我搜索“矩阵”它会返回几乎每部电影都有“ " 在标题中(matchQuery 就是这种情况)。

我改为使用 termQuery,但现在当我搜索“矩阵”时,它会返回正确的结果,当我搜索“矩阵”时,它什么也找不到,“矩阵”也是如此。

我猜问题是当我索引我的文档时,默认情况下会分析每个文本字段。如何创建 not_analyzed 索引?

现在我通过简单地将数据结构转换为带有 GSON 的 Json 来为电影编制索引。

【问题讨论】:

  • 如果您创建一个 not_analyzed(或关键字) 字段,您将只能搜索整个文本 ex。 "the matrix" ,搜索 "matrix" 不会返回任何东西。而是在匹配查询中传递“And”运算符。 ex "query": { "match" : { "message" : { "query" : "this is a test", "operator" : "and" } } } 你也可以定义最小匹配百分比

标签: elasticsearch elasticsearch-rest-client


【解决方案1】:

我必须使用 matchPhraseQuery 而不是 matchQuery 或 termQuery,才能正确执行搜索。

【讨论】:

  • match_phrase 和 match 之间的一个区别 - match_phrase 单词的顺序很重要,而在 match 中则不重要(只有那些标记应该在那里)
猜你喜欢
  • 2016-05-08
  • 2018-11-23
  • 1970-01-01
  • 2020-07-22
  • 2016-02-18
  • 2016-08-20
  • 2019-06-19
  • 2021-03-15
  • 2022-10-07
相关资源
最近更新 更多