elasticsearch - Elasticsearch multi_match逗号问题

标签 elasticsearch

我在项目上使用 flex 搜索以完成自动完成功能。

这是交易。

如果我搜索关键字=“bird nest”,
我收到一些不想得到的结果:

  • x加州燕窝
  • y在亚特兰大的鸟巢
  • z鸟,巢不可用(这是我不想要的那一种)

  • 有什么方法可以使elasticsearch不匹配单词之间有逗号的单词吗?

    这是我的查询的样子。
    {
        "from": 0,
        "size": 20,
        "sort": [
            {
                "rate": {
                    "order": "desc"
                }
            }
        ],
        "query": {
            "bool": {
                "should": {
                    "multi_match": {
                        "query": keyword,
                        "operator": "and",
                        "type": "phrase_prefix",
                        "fields": [ "name.en_US", "name.zh_TW","name.ja_JP","name.zh_CN" ]
                    }
                }
            }
        }
    }
    

    最佳答案

    它不是您应该研究的映射。它的分析仪在您的案例中起着至关重要的作用。如果使用默认的标准分析仪,这是预期结果。

    请在elasticsearch网站上查看此博客以获取解决方案。

    http://www.elasticsearch.org/blog/starts-with-phrase-matching/

    您可以使用分析api来测试如何在Elasticsearch服务器中对数据进行 token 化。

    curl -XGET 'localhost:9200/test/_analyze?text=this+is+a+test'
    

    上面的代码将使用与测试索引关联的默认索引分析器对“这是一个测试”文本进行分析。

    还可以提供一个分析器以使用其他分析器:
    curl -XGET 'localhost:9200/test/_analyze?analyzer=whitespace' -d 'this is a test'
    

    请检查以下链接,了解有关分析API的任何问题。

    http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-analyze.html

    据我所知,您可以将带字定界符标记过滤器的空白分析器用于实现此目的。尝试不同的参数,并使用分析api进行测试以获得预期结果。

    http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-word-delimiter-tokenfilter.html

    关于elasticsearch - Elasticsearch multi_match逗号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20674933/

    相关文章:

    python - Elasticsearch 中的关键字搜索和过滤

    elasticsearch - 如何仅显示用户有权访问的结果

    elasticsearch - 弹性日期格式

    elasticsearch - 按日期排序+在即将出现的结果之后显示过去的结果

    elasticsearch - 单个弹性服务器中的多个节点

    elasticsearch - Logstash日期格式grok模式

    elasticsearch - Kibana 7.2.1 map 可视化中缺少邮政编码

    mysql - elasticsearch jdbc导入数据包含json

    ruby-on-rails - ElasticSearch 按 id 批量删除

    elasticsearch - 如何在elasticsearch查询中获得3个随机搜索结果