Как мне искать недвижимость, используя Elastic Search для Node.js? - PullRequest
0 голосов
/ 07 октября 2019

Я загружаю различные документы в Elastic Search следующим образом:

await client.index({
  id: url,
  index: 'docs',
  body: {
    'Url': url,
    'Accessed': new Date().toISOString(),
    'Content': content,
    'Title': title,
  }
});

Теперь я хотел бы выполнить поиск только на _source.Title. Это должен быть нечеткий поиск по английскому тексту.

Как мне добиться этого с помощью библиотеки Elastic Search?

  const result = await client.search({
    index: 'docs',
    from: 0,
    size: 20,
    body: {
      "_source": [
        "Url",
        "Title",
        "Accessed",
      ],
      query: {
        // What goes here?
      }
    },
  });

Я использую "@elastic/elasticsearch": "^7.4.0".

Ответы [ 2 ]

3 голосов
/ 07 октября 2019

Есть много способов решить проблему. Но изначально я бы использовал match запрос с нечеткостью:

  const result = await client.search({
    index: 'docs',
    from: 0,
    size: 20,
    body: {
      "_source": [
        "Url",
        "Title",
        "Accessed",
      ],
      query: {
        "match" : {
          "title" : {
            "query" : "some title terms",
            "fuzziness": 2
          }
        }
      }
    },
  });
1 голос
/ 07 октября 2019

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html

  const result = await client.search({
    index: 'docs',
    from: 0,
    size: 20,
    body: {
      "_source": [
        "Url",
        "Title",
        "Accessed",
      ],
      query: {
         "fuzzy": {
            "title": {
               "value": "{searchQuery}"
            }
         }
      }
    },
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...