我需要在 elasticsearch 中进行查询,这样,在以下文本中:“我想和家人一起去纽约度假”在嵌套字段中找到:“纽约”。我在我的数据中有一个字段,其中包含“New York”这个词,它是 Nested 和 not_analyzed 类型。有人知道怎么做吗?
查询和我得到了它,没有人帮助我。
我需要在 elasticsearch 中进行查询,这样,在以下文本中:“我想和家人一起去纽约度假”在嵌套字段中找到:“纽约”。我在我的数据中有一个字段,其中包含“New York”这个词,它是 Nested 和 not_analyzed 类型。有人知道怎么做吗?
查询和我得到了它,没有人帮助我。
使用短语查询。从文档:
{
"match_phrase" : {
"message" : "this is a test"
}
}
我确实认为拥有“not_analyzed”对您来说将是一个问题,因为您实际上想要一个已分析的字段。您可以指定要使用的分析器类型,这可能会起作用。但如果可能的话,我建议使用分析字段。
如果您愿意支付空间成本,我建议您使用包含已分析和未分析部分的多字段。这是一个例子:
"sender": {
"type" : "multi_field",
"fields" : {
"sender" : {"type" : "string", "index" : "analyzed"},
"sender_not_analyzed" : {"type" : "string", "index" : "not_analyzed"}
}
}
not_analyzed
意思是它所说的,它没有被分析。它将被索引为传入的文字字符串,在单个标记中。如果您对其进行分析,它将被标记化和过滤,以使其对全文搜索有用。就这样做吧。
请参阅ElasticSearch Analysis的文档。