gpt4 book ai didi

elasticsearch - Elasticsearch:查询避免定义的分析器/使用另一个分析器

转载 作者:行者123 更新时间:2023-12-02 23:41:24 25 4
gpt4 key购买 nike

我对ElasticSearch查询有疑问。我有一个名为“名称”的字段,该字段由语音插件中的分析器定义。

  "name" : {
"type" : "string",
"store" : "yes",
"index" : "analyzed",
"analyzer" : "soundsAnalyzer",
"boost" : 10.0
},

到目前为止一切正常!但是我对此字段有一个特定的查询,我想获得完全匹配而不是相似的匹配。我试图通过使用术语查询和文本查询来实现这一点。查询一词根本不返回任何结果,我也没有理由。通过使用文本查询并定义另一个分析器,我也一无所获。我试过以下查询:
{
"query": {
"text": {
"documents.name": {
"query": "England",
"analyzer": "plainAnalyzer"
}
}
}
}

因此,我的问题是,如何才能避免在映射中为该特定查询获得精确匹配而定义分析器?
TIA

最佳答案

您将不得不对该字段进行两次索引-一次使用soundsAnalyzer,另一次使用plainAnalyzer。您可以使用multi_field类型实现此目的:

"name" : {
"type" : "multi_field",
"fields" : {
"name" : {"type" : "string", "store" : "yes", "index" : "analyzed", "analyzer" : "soundsAnalyzer", "boost" : 10.0},
"plain" : {"type" : "string", "index" : "analyzed", "analyzer" : "plainAnalyzer"}
}
}

当前所有使用 soundsAnalyzer的查询将保持不变。在需要 plainAnalyzer的查询中,可以使用 name.plain代替 name:
{
"query": {
"text": {
"documents.name.plain": {
"query": "England"
}
}
}
}

关于elasticsearch - Elasticsearch:查询避免定义的分析器/使用另一个分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15789114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com