Elasticsearch completion suggester跨多个索引和不同字段

agyaoht7  于 2023-03-29  发布在  ElasticSearch
关注(0)|答案(1)|浏览(116)

我有2个巨大的索引在ElasticSearch,我正在实现搜索自动完成使用完成建议,我需要有来自2个不同领域的不同索引的建议,但它不是那么有效

POST index1,index2/_search
 {
 "_source": "name",     
 "suggest": {
 "my-suggest": {
  "prefix": "milk",
  "completion": {
    "field": "name",     ----------> it should be name in index 1
    "size": 5 ,
    "skip_duplicates": true
      
  }
},
"my-suggest2": {
  "prefix": "milk",
  "completion": {
    "field": "product_name", ----------> this field is only existed in index2
    "size": 5 ,
    "skip_duplicates": true 
    
    }
    },
        "my-suggest3": {
  "prefix": "milk",
  "completion": {
    "field": "name", ----------> it should be name in index 2
    "size": 5 ,
    "skip_duplicates": true 
  }
 }.

问题是,我如何在一个查询中获得这些不同字段的5个建议,目前我只从一个索引中获得建议,并且由于“Product_name”在www.example.com中不可用index1.it一些错误

illegal_argument_exception",
      "reason": "no mapping found for field [brand_name]"

有人可以帮助我能够从多个索引生成suggester吗?

w8ntj3qf

w8ntj3qf1#

我会使用multi search,这样你就可以从index1中获得建议,而从index2中获得建议:

POST /_msearch
{"index": "index1"}
{"_source":"name","suggest":{"my-suggest":{"prefix":"milk","completion":{"field":"name","size":5,"skip_duplicates":true}}}}
{"index": "index2"}
{"_source":"name","suggest":{"my-suggest2":{"prefix":"milk","completion":{"field":"product_name","size":5,"skip_duplicates":true}},"my-suggest3":{"prefix":"milk","completion":{"field":"name","size":5,"skip_duplicates":true}}}}

相关问题