1

我正在尝试根据用户搜索的内容添加自动完成功能。
目前,我有以下映射:

{
  "courts_2": {
    "mappings": {
      "properties": {
        "author": {
          "type": "text",
          "analyzer": "my_analyzer"
        },
        "bench": {
          "type": "text",
          "analyzer": "my_analyzer"
        },
        "citation": {
          "type": "text"
        },
        "content": {
          "type": "text",
          "fields": {
            "standard": {
              "type": "text"
            }
          },
          "analyzer": "my_analyzer"
        },
        "court": {
          "type": "text"
        },
        "date": {
          "type": "text"
        },
        "id_": {
          "type": "text"
        },
        "title": {
          "type": "text",
          "fields": {
            "standard": {
              "type": "text"
            }
          },
          "analyzer": "my_analyzer"
        },
        "verdict": {
          "type": "text"
        }
      }
    }
  }
}

以下是我用于设置的代码:

{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "my_analyzer": {
            "tokenizer": "standard",
            "filter": [
              "lowercase",
              "my_metaphone"
            ]
          }
        },
        "filter": {
          "my_metaphone": {
            "type": "phonetic",
            "encoder": "metaphone",
            "replace": true
          }
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "author": {
        "type": "text",
        "analyzer": "my_analyzer"
      },
      "bench": {
        "type": "text",
        "analyzer": "my_analyzer"
      },
      "citation": {
        "type": "text"
      },
      "court": {
        "type": "text"
      },
      "date": {
        "type": "text"
      },
      "id_": {
        "type": "text"
      },
      "verdict": {
        "type": "text"
      },
      "title": {
        "type": "text",
        "analyzer": "my_analyzer",
        "fields": {
          "standard": {
            "type": "text"
          }
        }
      },
      "content": {
        "type": "text",
        "analyzer": "my_analyzer",
        "fields": {
          "standard": {
            "type": "text"
          }
        }
      }
    }
  }
}

这是我想要实现的:我想收集并存储对端点所做的所有查询,并对其使用自动完成功能。例如,迄今为止,所有用户都进行了以下查询 -

Real Madrid v/s Barcelona 
Real Madrid Team 
Real Madrid Coach 
Barcelona v/s Man City 
Sevilla Home Ground
Man Utd. recent results

现在,如果有人搜索Rea,则应建议以下自动完成查询:

Real Madrid v/s Barcelona 
Real Madrid Team 
Real Madrid Coach 

这是基于迄今为止所有用户而不是单个用户所做的搜索。此外,我想分析一下在过去一个月中进行的最热门查询是什么。

我在 AWS Elasticsearch 服务上使用 ElasticSearch 7.1 版。

编辑:由于我的需求发生了一些变化,我已经大大偏离了最初的问题。如果这造成了任何麻烦,我深表歉意。

4

0 回答 0