gpt4 book ai didi

arrays - 在 Elasticsearch 中的数组中精确搜索字符串

转载 作者:行者123 更新时间:2023-12-03 00:08:31 25 4
gpt4 key购买 nike

我想在数组中搜索确切的字符串。
我在 ES 中的数据如下:

         { category": [
"abc test"
],
"es_flag": false,
"bullet_points": [],
"content": "",
"description": false }

我有多个类别,例如“abc test”、“new abc test”等...

我正在尝试下面的查询,但我得到了多个类别的结果,我正在搜索“abc test”,但“new abc test”类别也出现在结果中。
    {
"from": 0,
"size": 30,
"query": {
"bool" : {
"must": [
{ "match_phrase": { "category": "abc test" } }
]
}
},
"sort": [ { "createdAt": { "order": "desc" } } ]
}

帮助将不胜感激。

最佳答案

我假设您使用的是默认分析器。在那种情况下 match_phrase反对"field": "abc test"将匹配所有具有相邻标记 abc test 的字段的文档, 包含:

  • new abc test
  • abc test new
  • foo abc test bar

  • 它不会匹配:
  • abc new test - 查询标记不相邻
  • test abc - 查询标记相邻,但顺序错误

  • 真正能帮助你的是使用 keyword分析器(您需要从头开始构建新索引或更新映射)。如果您从头开始构建:
    curl -XPUT http://localhost:9200/my_index -d '
    {
    "mappings": {
    "categories": {
    "properties": {
    "category": {
    "type": "text",
    "analyzer": "keyword"
    }
    }
    }
    }
    }'

    之后你只需要使用简单的查询,例如像这样( matchterm 都可以):
    curl -XGET http://localhost:9200/my_index/_search -d '
    {
    "query": {
    "match" : {
    "message" : "abc test"
    }
    }
    }'

    关于arrays - 在 Elasticsearch 中的数组中精确搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42999669/

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