0

を使用してelasticsearch 7.0.0います。

synonymsを作成しながら、この構成で作業しようとしていますindex

{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "synonym": {
            "tokenizer": "whitespace",
            "filter": [
              "synonym"
            ]
          }
        },
        "filter": {
          "synonym": {
            "type": "synonym",
            "synonyms_path": "synonyms.txt"
          }
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "address.state": {
        "type": "text",
        "analyzer": "synonym"
      },
      "location": {
        "type": "geo_point"
      }
    }
  }
}

インデックスに挿入されたドキュメントは次のとおりです。

{
  "name": "Berry's Burritos",
  "description": "Best burritos in New York",
  "address": {
    "street": "230 W 4th St",
    "city": "New York",
    "state": "NY",
    "zip": "10014"
  },
  "location": [
    40.7543385,
    -73.976313
  ],
  "tags": [
    "mexican",
    "tacos",
    "burritos"
  ],
  "rating": "4.3"
}

また、コンテンツsynonyms.txt:

ny, new york, big apple

address.stateプロパティで何かを検索しようとすると、empty結果が得られます。

クエリは次のとおりです。

{
  "query": {
    "bool": {
      "filter": {
        "range": {
          "rating": {
            "gte": 4
          }
        }
      },
      "must": {
        "match": {
          "address.state": "ny"
        }
      }
    }
  }
}

クエリにny(そのまま:同義語なし)を使用しても、結果は空です。

以前、 なしでインデックスを作成したときmappings、クエリは類義語を除いて結果を返すために使用されていました。

しかし今でmappingsは、用語が存在しても結果は空です。

このクエリは機能しています: { "query": { "query_string": { "query": "tacos", "fields": [ "tags" ] } } }

私は多くの記事/チュートリアルを調べて調査し、ここまでたどり着きました。

私は今ここで何が欠けていますか?

4

1 に答える 1